集合框架概述:
集合又称为容器,用于存储、提取、删除数据。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());//如果指针下面还有元素,则移动指针并获取相应元素
}
}
}