天天看點

集合(day07)——周遊集合 、對象集合、集合中删除某個元素(重點) 集合習題

周遊集合

集合的特點:

(1) 集合有預設值;

(2) 集合初始化後長度可以改變;

(3) 集合通過泛型,隻能存儲引用類型;

(4) 直接列印集合名稱,得到的是:[具體内容];

如果集合内容為空,結果是:[ ]。

泛型:

遇到尖括号引起來的,表示指定使用引用資料類型;

代碼如下:

public class Test02 {
    public static void main(String[] args) {
        ArrayList<Integer> arrayList=new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);

        System.out.println(arrayList);			//[1,2]
        //正常周遊
        for(int i=0;i<arrayList.size();i++){
            System.out.println(arrayList.get(i));
        }

        //删除集合元素,倒着周遊
        //先擷取1号索引位置元素,再删除該索引元素,索引-1
        //經過再周遊,索引值為0
        //擷取0号索引位置元素,再删除該索引元素,元素清空
        for(int i=arrayList.size()-1; i>=0;i--){
            System.out.println(arrayList.get(i));
            System.out.println(arrayList.remove(i));
        }
    }
}
           

解析:

(1)擷取集合長度是 i<arrayList.size();

(2)擷取目前元素是 arrayList.get(i);

(3)添加元素是 arrayList.add(泛型中類型一緻的值);

(4)删除集合元素 arrayList.remove(i);

注意:

(1)删除集合元素方法傳回值類型是傳回的元素值。

(2)操作時注意不能通路沒有的元素,否則會報錯

Exception in thread "main" java.lang.IndexOutOfBoundsException
           
for(int i=arrayList.size()-1; i>=0;i--){
            System.out.println(arrayList.remove(i));
            System.out.println(arrayList.get(i));//報錯,删完了再擷取該位置元素
}
           

========================================================================================================================================================

集合中删除指定元素:

List<String> list = new ArrayList<>();
        list.add("abc");
        list.add("def");
        list.add("def");
        list.add("abc");
//第一種
        for (int i = list.size() - 1; i >= 0; i--) {
            if(list.get(i)=="def"){
                list.remove(i);
            }
        }
        System.out.println(list);		//[abc, abc]
//第二種
         for (int i = 0; i < list.size(); i++) {
            if (list.get(i) == "def") {
                list.remove(i);
                i--;
            }
        }
        System.out.println(list);		//[abc, abc]
           

========================================================================================================================================================

對象集合:

public class Demo {
    public static void main(String[] args) {
        //存儲String類型
        ArrayList<String> list = new ArrayList<>();
        list.add("abc");
        list.add("def");
        list.add("abc");
        //存儲對象類型
        ArrayList<Person> arrayList = new ArrayList<>();
        Person p1 = new Person("張三", 23);
        Person p2 = new Person("李四", 24);
        Person p3 = new Person("王五", 25);
        arrayList.add(p1);
        arrayList.add(p2);
        arrayList.add(p3);
    }
}
           

========================================================================================================================================================

集合習題

第一題:

下面可以删除list中所有的“java”的代碼是()

集合(day07)——周遊集合 、對象集合、集合中删除某個元素(重點) 集合習題

A、 list.remove(“java”);

B、list.removeAll(“java”);

C、

集合(day07)——周遊集合 、對象集合、集合中删除某個元素(重點) 集合習題

D、

集合(day07)——周遊集合 、對象集合、集合中删除某個元素(重點) 集合習題

E、

集合(day07)——周遊集合 、對象集合、集合中删除某個元素(重點) 集合習題

解析

A錯誤, list.remove(“java”)隻删除的是遇到的第一個java

B錯誤,list.removeAll(“java”)直接報錯,原因如下:

removeAll(java.util.Collection<?>) in ArrayList cannot be applied to (java.lang.String)

解釋:ArrayList中的removeAll(java.util.Collection<?>)不能應用于java.lang.String

C正确,集合中原本有得元素是 [java, aaa, java, java, bbb]

倒着周遊,最終結果是 [aaa, bbb]

D錯誤,集合中原本有得元素是 [java, aaa, java, java, bbb]

順着周遊,遇見一個java删除該元素,是以下一個元素頂替了該元素位置,少周遊某一個元素

這樣處理最終結果是 [aaa, java, bbb]

E正确, [java, aaa, java, java, bbb]

順着周遊并且删除後先自減索引值,遇見一個java删除該元素,自減完後繼續周遊

這樣處理最終結果是 [aaa, bbb]

============================================================================

第二題:

檢視以下代碼,輸出的結果為:( )

ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("def");
list.add("def");
list.add("ghi");

for(int i = 0; i < list.size(); i++) {
	if(list.get(i).equals("def")) {
		list.remove(i);
	}
}

System.out.println(list);
           

A:[abc]

B:[abc, def]

C:[abc, def, ghi]

D:[abc, ghi]

解析

注意正序删除元素時候,隻有i–才能将集合裡的相關内容全部删除。

這道題中,選C。

============================================================================

第三題:

以下不屬于ArrayList集合中常用的方法的是:( )

A:add(E e);

B:size();

C:delete(int index);

D:remove(int index);

解析

ABD都正确,C并不是集合的方法。

============================================================================

第四題

集合和數組的差別描述正确的是:( )

A:數組的長度是固定的、集合的長度是可變

B:數組既可以存儲基本資料類型、也可以存儲引用資料類型

C:數組隻能存儲基本資料類型

D:集合隻能存儲引用資料類型

解析

A正确,數組長度固定,,集合長度可變。

B正确,數組可以存儲基本類型和引用類型。

C錯誤,數組可以存儲基本類型和引用類型。

D正确,集合隻能存儲引用類型。