更新時(shí)間:2021-06-02 12:20:59 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽4245次
1.基礎(chǔ)數(shù)據(jù)類(lèi)型集合去重:
例:String
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("c");
list.add("c");
list.add("a");
list.add("a");
list.add("b");
//1.set集合去重,不改變?cè)械捻樞?
pastLeep1(list);
//2.遍歷后判斷賦給另一個(gè)list集合 不改變?cè)械捻樞?
pastLeep2(list);
//3.set去重 并按自然順序排序
pastLeep3(list);
//4.set去重(縮減為一行)
pastLeep4(list);
//5.去重并按自然順序排序
pastLeep5(list);
}
方法實(shí)現(xiàn):
//1.set集合去重,不改變?cè)械捻樞?
public static void pastLeep1(List<String> list){
System.out.println("list = [" + list.toString() + "]");
List<String> listNew=new ArrayList<>();
Set set=new HashSet();
for (String str:list) {
if(set.add(str)){
listNew.add(str);
}
}
System.out.println("listNew = [" + listNew.toString() + "]");
}
//2.遍歷后判斷賦給另一個(gè)list集合 不改變?cè)械捻樞?
public static void pastLeep2(List<String> list){
System.out.println("list = [" + list.toString() + "]");
List<String> listNew=new ArrayList<>();
for (String str:list) {
if(!listNew.contains(str)){
listNew.add(str);
}
}
System.out.println("listNew = [" + listNew.toString() + "]");
}
//3.set去重 并按自然順序排序
public static void pastLeep3(List<String> list){
System.out.println("list = [" + list + "]");
Set set = new HashSet();
List<String> listNew=new ArrayList<>();
set.addAll(list);
listNew.addAll(set);
System.out.println("listNew = [" + listNew + "]");
}
//4.set去重(縮減為一行) 并按自然順序排序
public static void pastLeep4(List<String> list){
System.out.println("list = [" + list + "]");
List<String> listNew=new ArrayList<>(new HashSet(list));
System.out.println("listNew = [" + listNew + "]");
}
//5.去重并按自然順序排序
public static void pastLeep5(List<String> list){
System.out.println("list = [" + list + "]");
List<String> listNew=new ArrayList<>(new TreeSet<String>(list));
System.out.println("listNew = [" + listNew + "]");
}
2.對(duì)象根據(jù)指定屬性去重
List<User>userList = new ArrayList<>();
userList.add(new User(1,"小李","男"));
userList.add(new User(5,"小李","男"));
userList.add(new User(7,"小李","男"));
userList.add(new User(3,"小李","男"));
userList.add(new User(1,"小李","男"));
userList.add(new User(5,"小李","男"));
//6.對(duì)象 根據(jù)指定屬性去重 并按自然順序排序
System.out.println(removeDuplicateUser(userList));
//7. 根據(jù)指定屬性去重 并按自然順序排序2
System.out.println(removeDuplicateUser2(userList));
//6.對(duì)象 根據(jù)指定屬性去重 并按自然順序排序
public static ArrayList<User> removeDuplicateUser(List<User> users) {
Set<User> set = new TreeSet<User>(new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return new Integer(o1.getId()).compareTo(new Integer(o2.getId()));
}
});
set.addAll(users);
return new ArrayList<User>(set);
}
//7. 根據(jù)指定屬性去重 并按自然順序排序2
public static List<User> removeDuplicateUser2(List<User> list){
List<User> unique = list.stream().collect(
collectingAndThen(
toCollection(() -> new TreeSet<>(comparingLong(User::getId))), ArrayList::new)
);
return unique;
}
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Java集合去重的幾種方法",希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為您服務(wù)。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743