本文主要采用 Java 利用 Stream 处理 ArrayList 集合的去重方案,其他的处理方式也很多,例如 HashSet、HashMap 等,下面的方案仅供参考。
注:如果集合为bean对象,不能采用 distinct 的处理方案,可以参考第二种方案的写法
参考代码如下:
import lombok.Getter;
import lombok.Setter;
import java.util.*;
import java.util.stream.Collectors;
public class ListArrayTest {
// 关于 Java 利用 Stream 处理 ArrayList 集合的去重方案
public static void main(String[] args) {
// 方案一:
List<String> list = Arrays.asList("A", "B", "C", "D", "C", "A", "B", "E");
System.out.println("去重前长度 >> " + list.size());
long size = list.stream().distinct().count();
System.out.println("去重后长度 >> " + size);
List<String> collect = list.stream().distinct().collect(Collectors.toList());
System.out.println(collect);
// 注:如果集合为bean对象,不能采用 distinct 的处理方案,可以参考第二种方案的写法
// 方案二
List<UserInfo> userInfoList = new ArrayList<>();
UserInfo userInfo1 = new UserInfo();
userInfo1.setId(1);
userInfo1.setUserName("小明");
userInfoList.add(userInfo1);
UserInfo userInfo2 = new UserInfo();
userInfo2.setId(2);
userInfo2.setUserName("小红");
userInfoList.add(userInfo2);
UserInfo userInfo3 = new UserInfo();
userInfo3.setId(1);
userInfo3.setUserName("小明");
userInfoList.add(userInfo3);
// 根据属性 id 为去重依据
userInfoList = userInfoList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(
// 利用 TreeSet 的排序去重构造函数来达到去重元素的目的
() -> new TreeSet<>(Comparator.comparing(UserInfo::getId))), ArrayList::new));
System.out.println("去重后 bean 集合的长度 >> " + userInfoList.size());
}
}
@Getter
@Setter
class UserInfo {
private int id;
private String userName;
}
输出结果:
去重前长度 >> 8
去重后长度 >> 5
[A, B, C, D, E]
去重后 bean 集合的长度 >> 2
Process finished with exit code 0
Java开发过程中,我们会有数组与集合相互转换的情况,无论是数组还是集合,对于Java编程语言而言,都是比较常见的数据类型。下面通过程序的方式直观明了的讲解数组与集合的相互转换案例。
异常参考如下: 这个异常就是将List 转为 Map时因为 key重复导致的,其实我们只需要在转化时加个判断,便解决这个问题。
微信用户在关注、取消关注、点击菜单等相关操作时,如果配置了回调接口,微信会将这些事件信息回传到开发者配置指定的URL地址。
提供加密,解密,生成密钥对等方法。txt"; /** * * 生成密钥对 * * * @return KeyPair * * @throws EncryptException */ public static KeyPair generateKeyPair() throws Exception { try { KeyPairGenerator keyPairGen = KeyPairGenerat
Elasticsearch 安装启动依托于Java 环境,首先得确保已正确安装了Java,并配置好环境变量,要求java 7或以上或最新的版本。
5增加了新特性:可变参数,适用于参数个数不确定,类型确定的情况,Java 把可变参数当做数组处理。调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。
这几年中国在移动互联网这块发展非常迅猛,各种创业公司、小团队如雨后春笋般冒出来,对Java开发这几年中国在移动互联网这块发展非常迅猛,各种创业公司、小团队如雨后春笋般冒出来,对Java开发的需要变大。
最近的 Log4j2 漏洞想必大家都知道了,11月9日晚开源项目 Apache Log4j 2 的一个远程代码执行漏洞的利用细节被公开,随着 Apache Log4j 2.0 版本又发现了一个远程数据泄露的漏洞
Java 开发中,使用 XStream 将 xml 转为 Java 实体对象时,提示异常信息: 出现如上的异常信息,是因为没有设置权限级别导致,加上权限级别控制即可解决。
针对 naturalOrder() ,API 的介绍是这么写的:“Returns a comparator that compares {@link Comparable} objects in natural
Java 开发工具包 (JDK) 18 将于 2022 年 3 月 22 日发布。JDK 18 新功能一览:指定 UTF-8 作为标准 Java API 的默认字符集。
从Java8开始,Java已经不在推荐使用Date作为时间、日期函数,为什么从Java8之后,推荐使用LocalDateTime、LocalDate,而为什么不再推荐使用Date了呢?
他们考虑的“量子软件”被称为量子近似优化算法(QAOA),用于解决数学中的经典优化问题,它本质上是一种从一组可能的解决方案中挑选出最佳解决方案的方法。
很多博客都有写关于Java判断上传文件是否为图片的问题,搜索出来的绝大多数都是复制式的,千篇一律的都是根据后缀名来判断,这种方式是有很多缺陷的,如果我将一个文本文件的后缀名改为".
1、解压 2、移动到 /usr/local 目录下 3、进入并查看Java Jdk 目录 4、配置Java环境变量 编辑/etc/profile 文件 如果提示 vim 命令未安装,执行 yum -y
org/download/ 可以选择 CenOS 7,也可以选择 Stream 版本,并且根据实际情况选择对应的系统版本。
已经证实由于 SerializationUtils#deserialize 基于 Java 的序列化机制,可导致远程代码执行 (RCE),使用JDK9及以上版本皆有可能受到影响。