Java - 集合(二) List接口

List
–ArrayList 线性表中的顺序表在 内存中分配连续的空间 查 效率高 增 删效率低
–LinkedList 线性表中的双向链表 内存中分配离散的空间 查 效率低 增 删效率高

一 ArrayList
·实现了List接口
·成员变量size 和 capacity 的区别:

size 指的是ArrayList数组元素的个数
capacity 指的是ArrayList开辟的内存空间

·常用方法

isEmpty()
size()
add()
addAll()
remove()
set()
get()
indexOf()

代码示例,一些简单的方法就不写了

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class TestArrayList {
    public static void main(String[] args) {
        //这里使用了泛型,有两个好处:1 解决了繁琐的强制转换 2 锁定了数据类型,更加安全
        List<Integer> list = new ArrayList<>(); //声明一个ArrayList并申请空间,且用到了Java对象的多态,接口的引用指向实现类对象.

        System.out.println(list.size());

        list.add(43); // 这里其实进行了自动装箱,因为add()的参数是Object,这里自动转成Interger
        list.add(35);
        list.add(43);

        System.out.println(list.get(0));
        System.out.println(list.get(0).getClass()); // getClass() 是Object的方法,返回数据类型

        ArrayList<Integer> list2 = new ArrayList<>();
        list2.add(9);
        list2.add(22);

        list.addAll(2,list2); //可以在某个位置添加一个Collection
        System.out.println(list);

        //遍历
        //1 for 循环
        for (int i = 0; i < list.size(); i++) {
            int elem = list.get(i);
            System.out.println(i + "  " + elem);
        }


        //2 foreach 循环 JDK1.5特性
        for (int elem: list) {
            System.out.println(elem);
        }

        //3 Iterator迭代器
        Iterator<Integer> it = list.iterator();
        while (it.hasNext()) {
            int elem = it.next();
            System.out.println(elem);
        }
    }
}

二 LinkedList

常用方法比ArrayList多了一些

猜你喜欢

转载自blog.csdn.net/Yolandera/article/details/82563302