在学习ArrayList常用方法之前,我们先了解ArrayList是从哪里来的。
ArrayList是一个集合。集合又称为容器,用于存储、提取、删除数据。
集合中有很多分类,我们先从ArrayList中了解,了解ArrayList的常用方法。
1、add(); //用于在集合最后增加一个元素。
add(index,element);//用于在集合指定位置增加元素,并且其他元素后移
例程如下:
public class Test{
public static void main (String[] args){
ArrayList list = new ArrayList<>();
list.add("Tom");
System.out.println(list);
}
}
此时输出结果是:[Tom]
我们其实可以定义这个集合的数据类型,只需要在定义集合时,后边加上泛型<>,在泛型内定义数据类型。我们在第二个常用方法中尝试使用。
2、.size();//用于“测量”集合大小,或者说用于获取集合中有多少个元素。返回值类型是int,直接返回数值。
这里我们重新集合在ArrayList中增加泛型。
例程如下:
public class Test{
public static void main (String[] args){
ArrayList<String> list = new ArrayList<String>();
list.add("Tom");
System.out.println(list.size());
}
}
此时输出结果是:1
下面介绍方法时,默认有类和main方法和字符串类型的集合。
3、.get();//用于获取集合指定位置(从0开始)的元素。
list.add("Tom");
list.add("Jim");
System.out.println(list.get(1)):
由于是从0开始数,所以输出结果是:Jim
4、.clear();//清除集合中所有元素。无返回值
list.clear();
5、isEmpty();//用于测试集合是不是为空。返回子值是boolean类型。
System.out.println(list.isEmpty());
由于我们没有在集合中放元素,所以输出结果是:true
6、remove();//用于删除集合中元素,如果remove(位置),则删除指定位置元素。如果是remove(“元素”);则直接删除元素,另外如果要删除的元素中有相同的,remove只会执行一次。
如果觉得难理解,那么请看下边例程:
list.add("Jim");
list.add("Tom");
list.add("Tom");
list.remove("Tom");
System.out.println(list);
此时程序结果如下:显而易见并没有remove走全部的Tom,只remove走了第一Tom。
7、.contains();//用于测试集合中是否有某个元素,返回值类型是boolean。
例程:
list.add("Jim");
list.add("Tom");
System.out.println(list.cotains());
思考:这个判断过程是什么?
首先找到cotains源码:
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
此时我们发现contains调用了indexOf方法,将判断集合中是否有某个元素转化为判断indexOf的返回值是否大于等于0,于是乎,我又找到indexOf的源码,源码如下:
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;
}
源码逻辑很容易理解,if-else分两种情况遍历,如果有equals的元素那么返回这个元素的“序号”(如果这个程序逻辑都没读懂,那就再多读几遍)。然后观察o.equals(elementData[i])
这行代码,发现是一个多态,表面上编译的时候是使用object o调用equals,但实际上运行时是list在调用equals。
8、set(index,elemnet);//用于替换指定位置的元素。
例程:
list.add("jim");
list.add("Tom");
list.set(1,"Alan");
System.out.println(list);
程序运行结果如下:显而易见替换了1号位的Tom
遍历ArrayList中的所有元素
如何遍历?
1、使用最简单最基础的for循环
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
2、for加强循环。
for(String name:list){
System.out.println(name);
}
3、使用.iterator(),将集合中的元素转存在iterator变量中。然后使用.hasNext()和next()输出。
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {//判断当前指针下边是否还有元素
System.out.println(iterator.next());//如果指针下边还有元素,则移动指针并获取相应位置的元素
}