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;
	}
	
}

 

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