Java——用ArrayList刪掉集合中字符串或者自定義對象元素的重複值,LinkList的特有功能

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章