美文网首页JavaJAVA
Java集合之List

Java集合之List

作者: AbstractCulture | 来源:发表于2020-07-19 23:10 被阅读0次

List的特点

  • 有序。我们经常使用的List如:ArrayListLinkedList都是属于List接口下的数据结构。
  • 其中,ArrayList动态数组LinkedList是基于双向链表实现的有序序列。
  1. 数组的特点是可以随机访问,即通过数组下标对元素进行访问,对于插入与删除来说,在数组尾部进行插入与删除仍然是效率较高的,但是如果插入的数据是处于数组中间的索引位置,那么就要进行数组的移动,这个效率是非常低的。
  2. 链表插入删除是非常高效的,只需要把指针地址进行重新指向即可。而对于链表来说,想要直接访问链表中的某个索引位置,则需要从链表的头尾指针进行迭代。
    值得注意的是,ArrayListLinkedList都不是线程安全的数据结构.

listIterator

List接口提供了一个列表的专用迭代器,它支持双向移动。

        List<String> strings = Arrays.asList("a", "b", "c");
        ListIterator<String> stringListIterator = strings.listIterator();
        while (stringListIterator.hasNext()) {
            System.out.println("正序,当前元素:" + stringListIterator.next());
        }
        while (stringListIterator.hasPrevious()){
            System.out.println("倒叙,当前元素:"+stringListIterator.previous());
        }
listIterator

get和set

ArrayList中,你可以使用getset随机访问每个元素。但是对于链表结构的LinkedList来说,避免使用getset,因为它产生遍历的行为,应该使用迭代器。

拼接list-----addAll

        List<String> s1 = new ArrayList<>();
        s1.add("a");
        s1.add("b");
        s1.add("c");
        List<String> s2 = new LinkedList<>();
        s2.add("d");
        s2.add("e");
        s2.add("f");
        s1.addAll(s2);
        s1.forEach(s-> System.out.println(s));

注意:Arrays.asList()生产出来的list是不可以使用add,remove这种操作的.会抛出java.lang.UnsupportedOperationException异常.这是因为Arrays类返回的对象不是ArrayList,它是一个视图对象。任何试图改变数组大小的方法,都会抛出异常。

子范围-----subList

如果你需要访问list中的某个范围的数据。你可以使用subList方法。注意其中的索引值与真正获取到的List。可以看到,它是不包含s1.get(2)这个索引的元素的。

        List<String> s1 = new ArrayList<>();
        s1.add("a");
        s1.add("b");
        s1.add("c");
        List<String> strings = s1.subList(0, 2);
        strings.forEach(s-> System.out.println(s));
subList

清空子范围的值-----clear

        List<String> s1 = new ArrayList<>();
        s1.add("a");
        s1.add("b");
        s1.add("c");
        List<String> strings = s1.subList(0, 2);
        strings.clear();
        s1.forEach(s-> System.out.println(s));
clear

集合操作:交集,差集

  • 交集,retainAll,如果s1和s2是有交集的,那么s1中不在交集部分的数据就会被删除掉.
        List<String> s1 = new ArrayList<>();
        s1.add("a");
        s1.add("b");
        s1.add("c");
        List<String> s2 = new LinkedList<>();
        s2.add("a");
        s2.add("b");
        s1.forEach(s-> System.out.println(s));
        //交集,影响数据源
        if(s1.retainAll(s2)){
            System.out.println("s1与s2是有交集的");
        }
        s1.forEach(s-> System.out.println(s));
交集
  • 差集,removeAll,删除s1中在s2不存在的数据。
        List<String> s1 = new ArrayList<>();
        s1.add("a");
        s1.add("b");
        s1.add("c");
        List<String> s2 = new LinkedList<>();
        s2.add("a");
        s2.add("b");
        System.out.print("-----差集操作前: ");
        System.out.print("s1:");
        s1.forEach(s-> System.out.print(s+" "));
        System.out.print("s2:");
        s2.forEach(s-> System.out.print(s+" "));
        //交集,影响数据源
        s1.removeAll(s2);
        System.out.println();
        System.out.print("-----差集操作后: ");
        System.out.print("s1:");
        s1.forEach(s-> System.out.print(s+" "));
        System.out.print("s2:");
        s2.forEach(s-> System.out.print(s+" "));
差集

Vector

不推荐使用,可以理解为线程安全的列表.

相关文章

  • java集合框架List了解多少

    第1集 编程语⾔⾯试题之新版javase集合框架List基础篇简介:java集合框架⾥⾯List常⻅基础⾯试题考查...

  • Java之List集合

    ​上个星期,我碰到了一个非常头疼的问题,因为我需要找出两个List集合中的[交集的补集],也就是说,找出他们中互相...

  • Java集合之List

    Java集合类之List 如图 虚线为实体类 实线为接口 ArrayList子类 数组结构 从以下代码可看出Arr...

  • Java集合之List

    List的特点 有序。我们经常使用的List如:ArrayList、LinkedList都是属于List接口下的数...

  • java list转json 和json 转list 笔记

    java list集合转json json 数组转list集合 bean类 完整代码:

  • 数组和集合(二)

    List集合 与 Java类似,List集合的最大特征就是集合元素都有对应的顺序索引 List集合允许使用重复元素...

  • java——集合、多线程

    集合 java中的集合一般分为List、Map、Set、Queue。 List 列表集合 ArrayList:最常...

  • Java集合

    1、java 集合概述 Set :无序、不可重复的集合。 List : 有序、重复的集合。 Queue:Java ...

  • Java基础

    Java集合框架 一、Java集合类简介: Java集合大致分为四种体系:Set:无序、不可重复的集合List:有...

  • 深入学习List集合

    Java List 是一个有序集合。Java List 是扩展 Collection 接口的接口。Java Lis...

网友评论

    本文标题:Java集合之List

    本文链接:https://www.haomeiwen.com/subject/rdlrkktx.html