目录
一、集合
二、ArrayList类的常用方法
1、add(Object element) 方法
2、size() 方法
3、get(int index) 方法
4、add(int index, Object element) 方法
5、set(int i, Object element) 方法
6、clear() 方法
7、isEmpty() 方法
8、iterator() 方法
9、contains(Object o) 方法
10、remove(int index) 方法
11、remove(Object o) 方法
三、总结
一、集合
定义:集合又称为容器,用于存储、提取、删除数据。JDK提供的集合API都包含在 java.util 包内。
集合框架两大分支:Collection接口和Map接口
AbstractList是List接口的实现类,而ArrayList是AbstractList的一个子类。
二、ArrayList类的常用方法
1、add(Object element) 方法
add(Object element) 方法用于向ArrayList集合中的添加元素。
代码示例:
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例1
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();// <>中为一个类,称之为泛型,用于限定集合中元素的类,不能是基本数据类型,若不写,则默认为Object类
list.add("Tom"); // 添加元素“Tom”
list.add("Jim"); // 添加元素“Jim”
}
}
2、size() 方法
size()方法用于返回ArrayList集合中元素个数
修改代码示例1:
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例2
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
int length = list.size();//集合中元素个数
System.out.println(length);//输出
}
}
因为我们已经想集合中添加两个元素,所以直接调用,观察结果
可知集合中元素个数为2.
3、get(int index) 方法
get(int index)方法用于返回集合中对应位置的元素
修改代码示例1:
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例3
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
list.get(0);//返回列表中指定位置的元素,index从0开始
System.out.println(list.get(0));//输出
}
}
观察结果:
返回元素为“Tom”。
4、add(int index, Object element) 方法
add(int index, Object element) 方法用于在集合指定位置添加元素,原集合中从指定位置开始的元素全部后置
修改代码示例1
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例4
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
list.add(0,"Kate");//指定位置添加元素,从指定位置开始原来元素后移
System.out.println(list.get(0));//输出“0”位置元素
System.out.println(list.get(1));//输出“1”位置元素
}
}
观察结果:
5、set(int i, Object element) 方法
set(int i, Object element) 方法用于将索引i位置元素替换为元素element并返回被替换的元素。
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例5
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
list.set(1, "Lucy");//指定位置替换元素
System.out.println(list.get(1));//输出1位置元素
}
}
观察结果:
6、clear() 方法
clear() 方法用于清空集合中元素
改写代码示例1:
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例6
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
list.clear();//清空List集合中的所有元素
System.out.println(list.size());//输出集合中元素个数
}
}
运行结果:
输出结果为0,说明元素已被清空。
7、isEmpty() 方法
isEmpty() 方法用于判断集合容器是否为空,如果为空,则返回true,否则返回false。
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例7
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
boolean flag = list.isEmpty();//判断集合容器是否为空,如果为空,则返回true,否则返回false。
System.out.println(flag);
}
}
集合不为空,所以返回结果为false 。
8、iterator()
iterator()不是一个方法而是一个用于返回按适当顺序在列表的元素上进行迭代的迭代器
可以用它遍历集合元素
使用格式如下:
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
import java.util.Iterator;//Iterator是一个来自于java.lang包的接口,所以需要引包
public class Test { //代码示例8
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
Iterator<String> iterator = list.iterator();//将List集合中元素转到iterator变量中
while(iterator.hasNext()) {//判断当前“指针”下面是否还有元素
System.out.println(iterator.next());//如果指针下面有元素,则移动指针并获取相应位置的元素
}
}
}
运行结果:
9、contains(Object o) 方法
contains(Object o) 方法用以判断集合容器中是否含有指定元素,有返回值,且为boolean型。
改写代码示例1:
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例9
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
boolean flag = list.contains("Jim");//判断集合容器中是否有指定元素
System.out.println(flag);
}
}
观察结果:
到这里,不仅让我们思考contains是如何判断的,不妨让我们查看底层代码:
截取ArrayList类的两个方法:
public boolean contains(Object o) { //contains方法
return indexOf(o) >= 0;
}
public int indexOf(Object o) { //indexOf方法
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;
}
首先我们能看到,indexOf方法中传入的参数为Object类,这是为什么呢?
在我之前的博客Java中的继承中提到的:Object类是所有类的直接父类或间接父类。 而集合是一个容器,里面储存的元素属于哪个类是不确定的,为了让该方法适用于集合中存入的所有类,所以就将传入的参数定义为Object类。
为什么定义Object类就能适用呢?
在我之前的博客详述Java继承中的多态中提到:用父类变量创建子类对象,则该子类对象为上转型对象。因此对于Object的所有子类对象,该方法都适用。实际上,我们在集合中存入的String类对象就是上转型对象,父类是Object类。所以语句“Object o”是Java继承中多态的体现,同样,indexOf中的equals()方法实际上也是在用String类对象来调用String类中的equals方法。
10、remove(int index) 方法
remove(int index)方法用于移除列表中指定位置的元素,并返回被删元素
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例10
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
String str = list.remove(0);//删除指定索引(从0开始)位置的元素,将元素返回,并后面元素前移
System.out.println(list.get(0));
System.out.println(str);
}
}
运行结果:
11、remove(Object o) 方法
remove(Object o) 方法用于移除集合中第一次出现的指定元素,移除成功返回true,否则返回false。
package runtime;
import java.util.ArrayList;//因为ArrayList来自于java.lang包,所以需要引包
public class Test { //代码示例11
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
list.add("Jim");
boolean flag = list.remove("Tom");//删除List集合元素,返回boolean,并后面元素前移
System.out.println(list.get(0));
System.out.println(flag);
}
}
运行结果:
实际上这个方法与contains()方法的原理大同小异。
三、总结
ArrayList之众多集合中的一个,在以后的博客中我还会讲到更多有关集合的方法。