集合框架之ArrayList -Java

ArrayList

1.与数组的区别

如果要存放多个对象,可以使用数组,但是数组会有长度的限制,会出现不够用或者是浪费的情况。
为了解决数组的局限性引入了容器的概念,最常用的容器就是ArrayList
容器的容量会随着对象的增加,自动增长,不用担心超限的情况发生。

2.定义与常用方法(SchoolWork默认为一个类)(java.util.ArrayList)

<1>定义

ArrayList allWork = new ArrayList();  //定义格式

<2>add增加

allWork.add(new SchoolWork("math"));  //直接add对象,把对象加在最后面
allWork.add(1, "math");  //在指定位置增加对象

<3>contains判断是否存在

System.out.println(allWork.contains("math"));  //判断是否存在math,存在输出true,反之false

<4>get获取指定位置的对象

System.out.println(allWork.get(1));  //超限则会报错

<5>indexOf获取对象所处的位置

System.out.println(allWork.indexOf("math"));  //输出math的位置下标

<6>remove删除对象

allWork.remove(1);  //删除下标1的对象
allWork.remove("math"); //直接指定删除对象删除

<7>set替换

allWork.set(1, "english");  //把下标1的元素替换为english

<8>size获取大小

System.out.println(allWork.size());  //输出大小

<9>toArray转换为数组

SchoolWork arr[] = (school[])allWork.toArray(new SchoolWork[]{});

<10>addAll把另一个容器所有对象都加进来

//假设有allWork和threeWork两个容器,并且threeWork中已有对象
allWork.addAll(threeWork);  //将threeWork中的对象都添加到allWork中

<11>clear清空容器

allWork.clear();

3.List接口

ArrayList实现了List接口,通常会把引用声明为List接口类型(导入java.util.List)

List allWork = new ArrayList();

4.泛型Generic

不指定泛型的容器可以存放任何类型的元素
指定了泛型的容器只能存放指定类型的元素及其子类

List<SchoolWork> allWork = new ArrayList<SchoolWork>();  //为了不出现编译警告,前后都使用泛型
List<SchoolWork> allWork = new ArrayList<>();  //jdk7提供了简单的缩写

5.遍历ArrayList

<1>for循环遍历

for (int i = 0; i < allWork.size(); i++) {
            SchoolWork h = allWork.get(i);
            System.out.println(h);
}

<2>迭代器遍历(java.util.Iterator)

Iterator<SchoolWork> it= allWork.iterator();
//从最开始的位置判断"下一个"位置是否有数据
//如果有就通过next取出来,并且把指针向下移动
//直到"下一个"位置没有数据
while(it.hasNext()){
       SchoolWork h = it.next();
       System.out.println(h);
}
//迭代器的for写法
System.out.println("--------使用for的iterator-------");
for (Iterator<SchoolWork> iterator = allWork.iterator(); iterator.hasNext();) {
        SchoolWork work = (SchoolWork) iterator.next();
        System.out.println(work);
}

<3>增强型for循环

很多程序员的首选,但存在不足之处:
无法用来进行ArrayList的初始化
无法得知当前是第几个元素了,当需要只打印单数元素的时候就做不到了

for (SchoolWork h : allWork) {
    System.out.println(h);
}
原文地址:https://www.cnblogs.com/zx224569/p/12968704.html