在这两个程序中,都采用的是建立一个新集合,利用hasNext()方法,next()方法和contains方法来实现判断是否重复,如果重复则剔除,不重复则写入新集合,最后返回的仍是新的集合
注:但是需要注意的是,在实现删除集合中自定义对象元素的重复值时,因为ArrayList的contains方法判断是否包含,底层依赖的是equals方法,该方法是通过看地址是否相同来判断,在String类是好使的,因为String字符串存储相同的值时,地址是相同的,所以不需要重写,但是对于对象来说,需要重写该类的equals方法,比如该程序就得重写People类的equals方法。
同样地,remove()方法判断是否删除,同样也是!!
LinkList的特有功能:
public void addFirst(E e);
public void addLast(E e);
public E getFirst();
public E getLast();
public E removeFirst();
public E removeLast();
public E get(int index);
以下附上代码~
package pra_10;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
public class J_18 {
public static void main(String[] args) {
//1.ArrayList删掉集合中字符串的重复值
ArrayList list=new ArrayList();
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("c");
ArrayList list2=dele(list);
System.out.println(list2);
//ArrayList删除集合中自定义对象元素的重复值
ArrayList list3=new ArrayList();
list3.add(new People("aa",11));
list3.add(new People("bb",22));
list3.add(new People("aa",11));
list3.add(new People("bb",22));
list3.add(new People("cc",33));
list3.add(new People("dd",44));
//ArrayList list4=dele(list3);
//用的是Object的方法,所以contains使用地址值来判断是否一样,需要再People类重写equals方法
ArrayList list4=dele(list3);
System.out.println(list4);
//实现LinkedList的一些方法
LinkedList list9=new LinkedList();
list9.addFirst("a");
list9.addFirst("b");
list9.addFirst("v");
list9.addFirst("d");
list9.addLast("z");
System.out.println(list9); //[d, v, b, a, z]
System.out.println(list9.getFirst()); //d
System.out.println(list9.getLast()); //z
System.out.println(list9.removeFirst()); //d
System.out.println(list9.removeLast()); //z
System.out.println(list9); //[v, b, a]
System.out.println(list9.get(1));//b
}
//1.实现第一个小功能的方法
public static ArrayList dele(ArrayList list){
ArrayList list2=new ArrayList(); //创建一个新集合
Iterator it=list.iterator(); //根据传入的list集合获取迭代器
while(it.hasNext()){
Object obj=it.next(); //记录元素
if(!list2.contains(obj)){ //contains使用地址值来判断是否包含
list2.add(obj);
}
}
return list2;
}
}
class People{
private String name;
private int age;
public People() {
super();
}
public People(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;
}
public String toString() {
return "People [name=" + name + ", age=" + age + "]";
}
//重写的方法在这!!!
public boolean equals(Object obj) {
People p=(People)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
}