JAVA中List數組判斷是否有重復元數
1.使用Set的特性,將List轉Set,比較兩個集合的size()的大小是否相等
List<String> strList=new ArrayList<>(Arrays.asList("張三","李四","李四","王五"));
Set<String> strSet=new HashSet<>(strList);
if (strList.size() == strSet.size()) {
System.out.println("沒有重復");
} else {
System.out.println("重復了,老鐵");
}
2.使用jdk8---Stream的特性
List<String> strList=new ArrayList<>(Arrays.asList("張三","李四","李四","王五"));
long count = strList.stream().distinct().count();
if (strList.size() == count) {
System.out.println("沒有重復");
} else {
System.out.println("重復了,老鐵");
}
3.使用Object時判斷成員變量是否有重復
User類:
@Data
public class User {
private Long id;
private String name;
private Integer age;
public User(Long id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public User() {
}
}
判斷User集合中name是否有重復:
List<User> users = new ArrayList<User>(){
{
add(new User(13131l,"張三",33));
add(new User(21244l,"李四",23));
add(new User(31865l,"王五",41));
add(new User(31231l,"大聰明",25));
add(new User(31123l,"大智慧",27));
add(new User(38751l,"張三",30));
}
};
List<String> names = users.stream().map(User::getName).collect(Collectors.toList());
System.out.println(names.toString());
//distinct()過濾重復的姓名 count()計算數量
long count = names.stream().distinct().count();
System.out.println("去重后的個數:"+count);
if (names.size() == count){
System.out.println("沒有重復");
}else {
System.out.println("重復了,老鐵");
}