ArrayList:去除集合中字符串的重复值 LinkedList:去除集合中自定义对象的重复值
import java.util.ArrayList; /* * ArrayList:去除集合中字符串的重复值(字符串的内容相同) * * 数组的长度:数组名.length; * 字符串的长度:字符串对象.length(); * 集合的长度:集合对象.size(); */ public class ArrayListTest { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("张三"); list.add("张三"); list.add("李四"); list.add("李四"); list.add("王五"); System.out.println(list);//[张三, 张三, 李四, 李四, 王五] //method1(list); method2(list); System.out.println(list);//[张三, 李四, 王五] } //2.拿前面的元素和后面的元素进行比较,发现后面的元素和前面的元素值相等的话,就将后面的元素值进行删除 private static void method2(ArrayList<String> list) { for(int i=0; i<list.size()-1; i++){ for(int j=i+1; j<list.size(); j++){ //如果前面的元素和后面的元素相等的话,就删除后面的元素 if(list.get(i).equals(list.get(j))){ list.remove(j); //又因为集合的长度是动态变化的,所以j对应的元素值删除之后,j的索引需要-1 j--; } } } } //1.创建一个新的集合,然后遍历原有的集合元素,判断当前的元素是否包含在新集合中,如果不包含就添加到新集合中 private static void method1(ArrayList<String> list) { ArrayList<String> list2 = new ArrayList<String>(); for(int i=0; i<list.size(); i++){ String value = list.get(i); if(!list2.contains(value)){ list2.add(value); } } System.out.println(list2);//[张三, 李四, 王五] } }
import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; //LinkedList:去除集合中自定义对象的重复值(对象的成员变量值都相同) public class LinkedListTest { public static void main(String[] args) { LinkedList<Person> list = new LinkedList<Person>(); list.add(new Person("张三", 18, '男')); list.add(new Person("张三", 18, '男')); list.add(new Person("李四", 18, '男')); list.add(new Person("李四", 20, '男')); list.add(new Person("李四", 18, '男')); list.add(new Person("张三", 28, '男')); Iterator<Person> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } System.out.println("----------------------------------"); method2(list); iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } //2.将前面的元素值和剩余的元素值进行比较,一旦相等就将后面的元素值进行删除 private static void method2(LinkedList<Person> list) { for(int i=0; i<list.size()-1; i++){ for(int j=i+1; j<list.size(); j++){ if(list.get(i).equals(list.get(j))){ list.remove(j); //又因为集合的长度是动态变化的,所以j对应的元素值删除之后,j的索引需要-1 j--; } } } } // 1.创建一个新的集合,然后遍历原始集合中的元素,然后判断当前元素是否包含在新集合中,如果不包含就将元素添加到新集合中 private static void method1(LinkedList<Person> list) { ArrayList<Person> list2 = new ArrayList<Person>(); for (int i = 0; i < list.size(); i++) { Person p = list.get(i); if (!list2.contains(p)) { list2.add(p); } } Iterator<Person> iterator = list2.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } }
public class Person { private String name; private int age; private char sex; public Person() { super(); } public Person(String name, int age, char sex) { super(); this.name = name; this.age = age; this.sex = sex; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]"; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (sex != other.sex) return false; return true; } }