【java】【集合】去除ArrayList中的元素、ArrayList巢狀ArrayList

love_Aym發表於2018-04-24

一、去除ArrayList中重複字串元素方式

    * 需求:ArrayList去除集合中字串的重複值(字串的內容相同)

    * 思路:建立新集合方式


   建立新集合將重複元素去掉
1、明確返回值型別,返回ArrayList
2、明確引數列表ArrayList
 
分析:
1、建立新集合
2、根據傳入的集合(老集合)獲取迭代器
3、遍歷老集合
4、通過新集合判斷是否包含老集合中的元素,如果包含就不新增,如果不包含就新增

import java.util.ArrayList;
import java.util.Iterator;

@SuppressWarnings({ "rawtypes", "unchecked" })
public class Demo1_ArrayList {

	/**
	 * * A:案例演示
		* 需求:ArrayList去除集合中字串的重複值(字串的內容相同)
		* 思路:建立新集合方式
	 */
	public static void main(String[] args) {
		ArrayList list = new ArrayList();
		list.add("a");
		list.add("a");
		list.add("b");
		list.add("b");
		list.add("c");
		list.add("c");
		list.add("c");
		list.add("c");
		
		ArrayList newList = getSingle(list);
		System.out.println(newList);
	}

	public static ArrayList getSingle(ArrayList list) {
		ArrayList newList = new ArrayList<>();	//1,建立新集合
		Iterator it = list.iterator();		//2,根據傳入的集合(老集合)獲取迭代器
		
		while(it.hasNext()) {			//3,遍歷老集合
			Object obj = it.next();		//記錄住每一個元素
			if(!newList.contains(obj)) {	//如果新集合中不包含老集合中的元素
				newList.add(obj);	//將該元素新增
			}
		}		
		return newList;
	}
}


二、去除ArrayList中重複自定義物件元素

需求:ArrayList去除集合中自定義物件元素的重複值(物件的成員變數值相同)

注意事項:重寫equals()方法的


建立新集合將重複元素去掉

1、明確返回值型別,返回ArrayList
2、明確引數列表ArrayList

分析:
1、建立新集合
2、根據傳入的集合(老集合)獲取迭代器
3、遍歷老集合
4、通過新集合判斷是否包含老集合中的元素,如果包含就不新增,如果不包含就新增

import java.util.ArrayList;
import java.util.Iterator;

import com.heima.bean.Person;

@SuppressWarnings({ "rawtypes", "unchecked" })
public class Demo2_ArrayList {
	/**
	 * * A:案例演示
		* 需求:ArrayList去除集合中自定義物件元素的重複值(物件的成員變數值相同)
	   * B:注意事項
		* 重寫equals()方法的
		contains方法判斷是否包含,底層依賴的是equals方法
		remove方法判斷是否刪除,底層依賴的是equals方法
	 */
	public static void main(String[] args) {
		ArrayList list = new ArrayList();	//建立集合物件
		list.add(new Person("張三", 23));
		list.add(new Person("張三", 23));
		list.add(new Person("李四", 24));
		list.add(new Person("李四", 24));
		list.add(new Person("李四", 24));
		list.add(new Person("李四", 24));
		
		//ArrayList newList = getSingle(list);			//呼叫方法去除重複
		//System.out.println(newList);
		list.remove(new Person("張三", 23));
		System.out.println(list);
	}
	
	public static ArrayList getSingle(ArrayList list) {
		ArrayList newList = new ArrayList<>();	//1,建立新集合
		Iterator it = list.iterator();		//2,根據傳入的集合(老集合)獲取迭代器
		
		while(it.hasNext()) {			//3,遍歷老集合
			Object obj = it.next();		//記錄住每一個元素
			if(!newList.contains(obj)) {	//如果新集合中不包含老集合中的元素
				newList.add(obj);	//將該元素新增
			}
		}		
		return newList;
	}
}

三、ArrayList巢狀ArrayList

import java.util.ArrayList;
import com.heima.bean.Person;

public class Demo5_ArrayListArrayList {
	/**
	 * * A:案例演示
	 * 集合巢狀之ArrayList巢狀ArrayList
	 * 案例:
	 * 我們學科,學科又分為若個班級
	 * 整個學科一個大集合
	 * 若干個班級分為每一個小集合
	 */
	public static void main(String[] args) {
		ArrayList<ArrayList<Person>> list = new ArrayList<>();
		
		ArrayList<Person> first = new ArrayList<>();				//建立第一個班級
		first.add(new Person("楊冪", 30));
		first.add(new Person("李冰冰", 33));
		first.add(new Person("范冰冰", 20));
		
		ArrayList<Person> second = new ArrayList<>();
		second.add(new Person("黃曉明", 31));
		second.add(new Person("趙薇", 33));
		second.add(new Person("陳坤", 32));
		
		//將班級新增到學科集合中
		list.add(first);
		list.add(second);
		
		//遍歷學科集合
		for(ArrayList<Person> a : list) {
			for(Person p : a) {
				System.out.println(p);
			}
		}
	}
}


相關文章