周遊集合
集合的特點:
(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”的代碼是()
A、 list.remove(“java”);
B、list.removeAll(“java”);
C、
D、
E、
解析
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正确,集合隻能存儲引用類型。