List集合接口

List

List接口特点:
1、有序集合
2、有索引(操作索引时需要注意的是IndexOutOfBoundsException,索引越界异常)
3、允许重复元素
List带索引的方法:
add(指定位置添加)、get(获取指定位置元素)、remove(指定位置移除)、set(指定位置替换)

        List<String> list = new ArrayList<>();
        list.add("5");
        list.add("2");
        list.add("1");
        list.add(0,"jws");//指定索引添加
        list.remove(1);//移除元素
        list.set(2,"love");//替换元素

list集合3种遍历方式

        //普通for循环
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
        //迭代器
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println(next);
        }
        //增强for循环
        for (String s : list) {
            System.out.println(s);
        }

ArrayList(底层数组,查询快,增删慢,多线程)

许多人什么情景下都会大量使用Arraylist,其实是不对的,需要确定该需求是否是查询比较多的需求。

LinkedList(底层链表,查询慢,增删快,多线程)

注意:使用LinkedList特有方法,不能使用多态创建对象了

因为是链表结构,对于首尾位置的元素很方便。它有大量操作首尾元素的方法。
addFirst / addLast。
getFirst / getLast。
removeFirst / removeLast。
pop方法 等效于 removeFirst : 移除第的一个元素
push方法 等效于 addFirst:开头添加

        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("jws");
        linkedList.addFirst("521");//集合开头添加
        linkedList.push("521");//集合开头添加
        linkedList.addLast("last");//尾部添加
        String first = linkedList.getFirst();//获取第一个元素
        String last = linkedList.getLast();//获取最后一个元素
        linkedList.clear();//清空集合中元素

如果获取元素的时候集合中没有元素,会报.NoSuchElementException(没有元素异常) 所以使用的时候需要加上判断集合是否为空。

        if (!linkedList.isEmpty()) {
            String first = linkedList.getFirst();//获取第一个元素
            String last = linkedList.getLast();//获取最后一个元素
        }
        String first = linkedList.removeFirst();//移除第一个元素,返回移除元素
        String popFirst = linkedList.pop();//移除第一个元素,返回移除元素
        
        String last = linkedList.removeLast();//移除最后一个元素,返回移除元素

Vector(底层数组,单线程)

1.0版本最早期集合,几乎不用了。

上一篇:LinkedList源码解析


下一篇:List实现类——Vector、ArrayList、LinkedList关系(JDK1.8)