在這兩個程序中,都採用的是建立一個新集合,利用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;
}
}