集合框架概述:
集合又稱爲容器,用於存儲、提取、刪除數據。JDK提供的集合API都包含在 java.util 包內。
集合框架兩大分支:Collection接口和Map接口。
ArrayList <String>=new ArrayList<String>();
<String>泛型,用於約束元素數據類型,如果省略默認爲Object
ArrayList常用方法總結:
1、add(Object element) 向列表的尾部添加指定的元素,且每次只能添加一個元素
package list;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
list.add("Tom");//用於向List集合容器中尾部添加一個元素
}
2、size() 返回列表中的元素個數
package list;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
int length =list.size();//用於獲取集合中有多少元素
System.out.println(length);
}
3、get(int index) 返回列表中指定位置的元素,index從0開始,即第一個元素是從0開始調用
package list;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
list.add("Tom");//用於向List集合容器中尾部添加一個元素
System.out.println(list.get(0));//獲取指定索引(從0開始)位置的元素
}//輸出結果爲Tom
4、add(int index, Object element) 在列表的指定位置插入指定元素
package list;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
list.add("Tom");
list.add(0, "Kate");//在指定位置添加元素,原來位置的元素後移
System.out.println(list.get(1));
}//此時輸出爲Tom,第一個元素爲Kate,Tom順勢後移,所以爲“1”的位置
5、set(int i, Object element) 將索引位置元素替換爲元素element並返回被替換的元素。
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
list.add("Tom");
list.add("Jim");
list.set(1, "Lucy");
System.out.println(list.get(1));
}//輸出結果爲Lucy
6、clear() 從列表中移除所有元素
package list;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
list.add("Tom");
list.add("Jim");
list.clear();
int length =list.size();
System.out.println(length);
}//輸出結果爲0,證明集合中的元素已經被清空
7、isEmpty() 判斷列表是否包含元素,不包含元素則返回 true,否則返回false
package list;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
list.add("Tom");
boolean flag =list.isEmpty();//集合中沒有元素,則true
System.out.println(flag);
}//結果爲false,因爲集合中存在元素
8、contains(Object o) 如果列表包含指定的元素,則返回 true。
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
ArrayList<String>list=new ArrayList<String>();
int flag=list.contains("Jim");//用來判斷集合容器中是否含所有參考元素
System.out.println(flag);
}
此時我們要考慮contains方法的底層代碼包含的含義
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if (o.equals(elementData[i]))
return i;
}
return -1;
}
Object o是上轉型對象,存儲的是String類中對象的地址,看似調用的是Object類,但是因爲JVM運行的時候是根據地址確定對象,所以爲String類。其中elementData是一個數組,equals判斷現有元素是否與數組元素的內容保持一致。
9、remove(int index)刪除指定索引(從0開始)位置的元素,並將被刪元素返回,將後面元素前移
package list;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
list.add("Tom");
list.add("Jim");
String str=list.remove(0);//刪除指定索引(從0開始)位置的元素,並將元素返回,並就後面元素前移
System.out.println(list.get(0));
}
10、remove(Object o) 移除集合中第一次出現的指定元素,移除成功返回true,否則返回false。返回boolean型(有才能刪除),並後面元素前移
package list;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
list.add("Tom");
list.add("Jim");
list.remove("Tom");//刪除List集合元素,並返回boolean(有才能刪除),並後面元素前移
System.out.println(list.get(0));
}
11、iterator() 返回按適當順序在列表的元素上進行迭代的迭代器(按照地址順序)
package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
ArrayList<String>list=new ArrayList<String>();
list.add("Tom");
list.add("Jim");
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
for(String name:list) {
System.out.println(name);
}
Iterator<String> iterator=list.iterator();//將list集合中的元素轉到iterator中,現在有兩份,list和iterator
while (iterator.hasNext()) {//判斷當前“指針”下面是否還有元素
System.out.println(iterator.next());//如果指針下面還有元素,則移動指針並獲取相應元素
}
}
}