1. 集合框架(去除ArrayList中重复字符串元素方式)
思路:创建新集合的方式,通过迭代器获得原来集合的元素,再把获取的元素添加到新集合当中,此过程判断新集合中是否已经包含该元素(通过contains方法),若不包含,则将元素添加到新集合中,否则不添加。最后再输出新的集合即可。
示例:
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("b");
list.add("c");
list.add("c");
list.add("c");
list.add("c");
System.out.println(list);
ArrayList newList = getSingle(list);
System.out.println(newList);
}
/*
* 去除重复
* 1,返回ArrayList
* 2,参数列表ArrayList
*/
public static ArrayList getSingle(ArrayList list) {
ArrayList newList = new ArrayList(); //创建一个新集合
Iterator it = list.iterator(); //获取迭代器
while(it.hasNext()) { //判断老集合中是否有元素
String temp = (String)it.next(); //将每一个元素临时记录住
if(!newList.contains(temp)) { //如果新集合中不包含该元素
newList.add(temp); //将该元素添加到新集合中
}
}
return newList; //将新集合返回
}
2. 集合框架(去除ArrayList中重复自定义对象元素)
思路:和去除重复字符串元素的方式一样,但是在用contains方法判断时在自定义对象类中需要重写equals方法,因为contains底层依赖的就是equals方法,如果不重写,默认继承的是根父类object类中的equals方法,此方法无法比较自定义对象,故达不到去除重复的目的。
示例:
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("张三",23));
list.add(new Student("张三",23));
list.add(new Student("李四",24));
list.add(new Student("李四",24));
list.add(new Student("李四",24));
list.add(new Student("李四",24));
ArrayList<Student> newlist = getSingle(list);
System.out.println(newlist);
}
public static ArrayList<Student> getSingle(ArrayList<Student> list){
ArrayList<Student> newlist = new ArrayList<>();
Iterator<Student> it = list.iterator();
while(it.hasNext()){
Student s = (Student)it.next();
if(!newlist.contains(s)){
newlist.add(s);
}
}
return newlist;
}
自定义对象类:
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
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;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
@Override
public boolean equals(Object obj) {
Student p = (Student)obj;
return this.name.equals(p.name) && this.age == p.age;
}
}