public static void main(String[] args) { List list = new ArrayList(); list.add(1); list.add(4); list.add(6); list.add(5); list.add(4); list.add(1); System.out.println(list); Set set = new HashSet(); List newList = new ArrayList(); set.addAll(list); newList.addAll(set); System.out.println(newList); } }
运行结果: [1, 4, 6, 5, 4, 1] [1, 4, 5, 6]
但是如果集合中存的是对象类型就不能简单的和Set互转去重了
定义一个对象类
public class People { private String name; private String phoneNumber; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } @Override public String toString() { return "People [name=" + name + ", phoneNumber=" + phoneNumber + "]"; } }
List<People> list = new ArrayList<>(); list.add(new People("张三","111")); list.add(new People("李四","222")); list.add(new People("王五","333")); list.add(new People("张三","111")); list.add(new People("张三","222")); Set<People> set = new HashSet<>(); set.addAll(list); System.out.println(list); System.out.println(set.toString()); } }
输出结果: [People [name=张三, phoneNumber=111], People [name=李四, phoneNumber=222], People [name=王五, phoneNumber=333], People [name=张三, phoneNumber=111], People [name=张三, phoneNumber=222]]
[People [name=张三, phoneNumber=111], People [name=张三, phoneNumber=111], People [name=王五, phoneNumber=333], People [name=张三, phoneNumber=222], People [name=李四, phoneNumber=222]]
public class People { private String name; private String phoneNumber; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public People( String name, String phoneNumber) { super(); this.name = name; this.phoneNumber = phoneNumber; } @Override public String toString() { return "People [name=" + name + ", phoneNumber=" + phoneNumber + "]"; } @Override public boolean equals(Object obj) { People p = (People)obj; return name.equals(p.name) && phoneNumber.equals(p.phoneNumber); } @Override public int hashCode() { String str = name + phoneNumber; return str.hashCode(); } }
运行测试结果如下:
[People [name=张三, phoneNumber=111], People [name=李四, phoneNumber=222], People [name=王五, phoneNumber=333], People [name=张三, phoneNumber=111], People [name=张三, phoneNumber=222]]
[People [name=王五, phoneNumber=333], People [name=李四, phoneNumber=222], People [name=张三, phoneNumber=222], People [name=张三, phoneNumber=111]]
public int hashCode() { int h = hash; if (h == 0 && count > 0) { int off = offset; char val[] = value; int len = count; for (int i = 0; i < len; i++) { h = 31*h + val[off++]; } hash = h; } return h; }
List<People> list = new ArrayList<>(); list.add(new People("张三","111")); list.add(new People("李四","222")); list.add(new People("王五","333")); list.add(new People("张三","111")); list.add(new People("张三","222")); List newList = (List) list.stream().distinct().collect(Collectors.toList()); System.out.println(list); System.out.println(newList.toString()); } }
运行结果: [People [name=张三, phoneNumber=111], People [name=李四, phoneNumber=222], People [name=王五, phoneNumber=333], People [name=张三, phoneNumber=111], People [name=张三, phoneNumber=222]]
[People [name=张三, phoneNumber=111], People [name=李四, phoneNumber=222], People [name=王五, phoneNumber=333], People [name=张三, phoneNumber=111], People [name=张三, phoneNumber=222]]
public static void main(String[] args) { List list = new ArrayList(); list.add(1); list.add(4); list.add(6); list.add(5); list.add(4); list.add(1); System.out.println(list); Set set = new HashSet(); List newList = new ArrayList(); for (Object in:list) { if(set.add(in)){ newList.add(in); } } System.out.println(newList); } }
List<People> list = new ArrayList<>(); list.add(new People("张三","111")); list.add(new People("李四","222")); list.add(new People("王五","333")); list.add(new People("张三","111")); list.add(new People("张三","222")); Set<People> set = new HashSet<>(); List newList = new ArrayList(); for (People in:list) { if(set.add(in)){ newList.add(in); } } System.out.println(list); System.out.println(set.toString()); System.out.println(newList); } }
运行结果: [People [name=张三, phoneNumber=111], People [name=李四, phoneNumber=222], People [name=王五, phoneNumber=333], People [name=张三, phoneNumber=111], People [name=张三, phoneNumber=222]]
[People [name=王五, phoneNumber=333], People [name=李四, phoneNumber=222], People [name=张三, phoneNumber=222], People [name=张三, phoneNumber=111]]
[People [name=张三, phoneNumber=111], People [name=李四, phoneNumber=222], People [name=王五, phoneNumber=333], People [name=张三, phoneNumber=222]]