美文网首页
Java集合—List

Java集合—List

作者: noobBird | 来源:发表于2019-06-13 18:06 被阅读0次
网上找的图

很好的展示了Java中持有对象的分类和继承关系以及分类关系

一 Collection接口

1. Collection接口的超类接口

   Collection接口继承于java.lang.Iterable接口 
   JDK中描述Iterable接口的作用是 实现这个接口的对象允许实现 “for-each loop”循环语句
   Iterable有三个待实现的方法:
   Iterator<T> iterator():返回泛型对应的迭代器对象
   forEach(Consumer<? super T> action) :对Iterable的对内部元素进行遍历,并对元素进行指定的操作
   Spliterator<T> spliterator() : 创建并返回一个可分割迭代器

2. Collection接口的一般方法(继承Object方法不赘述比如 hashcode() equals()):

   size()  :返回当前集合的元素数量
   isEmpty():当前集合是否为空 
   contains(Object o):集合是否包含指定的对象
   Iterator<E> iterator() :返回集合中的元素迭代器 继承于父接口的方法
   toArray() : 把集合所有元素以数组的形式返回 还有一个指定返回的泛型的重载的方法不赘述
   clear():清空集合中所有的元素 会变成空集合 不是null
   add(E e): 集合中增加元素 (JDK解释是确保集合是否包含指定的元素 如果集合变化了返回true 
                  集合不允许重复或者已经存在返回false)
   remove(Object o):移除一个元素
   removeAll(Collection<?> c):移除集合中与指定集合相同的部分
   containsAll(Collection<?> c):是否包含指定的集合
   addAll(Collection<? extends E> c):增加指定的集合
   retainAll(Collection<?> c):保留两个集合的交集
   Stream<E> stream():返回以当前集合作为源的 串行Stream对象
   Stream<E> parallelStream():返回以当前集合作为源的并行Stream对象

3.常用的子接口

3.1 List接口:一个可重复有序集合 并且允许多个元素为空

 replaceAll(UnaryOperator<E> operator): 把运算符应用于每一个元素以改变每个元素
 sort(Comparator<? super E> c) :通过指定的Comparator对象 排序
 get(int index):返回索引下边对应的元素
 E set(int index, E element):改变指定的下标的元素
 int indexOf(Object o):返回指定元素在集合中**第一次出现的位置**
 lastIndexOf(Object o):返回指定元素在集合中**最后一次出现的位置**
 ListIterator<E>  listIterator():返回List迭代器  还有个从指定位置的重载方法作用一样的
 List<E> subList(int fromIndex, int toIndex):返回指定的子集

3.1.1 ArrayList实现类: 类似一个可变大小的数组,查询快 插入和删除代价高昂,线程不安全

原理:底层是数组
定义了一个数组变量用以存储集合中的元素和数组长度变量用以标识集合的size()
默认创建的数组长度是 10
成员变量.png
       数组扩容:如果执行add()方法 数组长度不够 就要执行数组扩容 本质就是创建一个更大的数组然后进行数组的拷贝
ArrayList数组扩容原理

add(E e)原理: 本质也是数组的拷贝 判断数组是否需要扩容 然后进行数组元素赋值 所以插入和删除效率低 因为都新创建一个数组对象
查询效率高:因为数组课已通过下标可以快速定位到堆空间对应的位置 从而获取对象元素

数组内存

3.1.2 LinkedList实现类: 链表,查询慢 插入和删速度快,线程不安全

 原理:是一个双向链表
image.png

get(Index)原理:
因为是双向链表 可以看出其实是没有下标索引的


image.png

所以链表的查询其实是一直遍历下去一直到 要找的索引值那里
所以LinkedList 查询较慢慢 一直在遍历
set方法


image.png
add方法
image.png
image.png
因为不破坏结构而且不需要扩容 所以增删速度块

3.1.2 Vector 这个和ArrayList一样的 他也是在数组的基础上 他是线程安全的 许多方法加了synchronized 关键字

相关文章

  • 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

    csdn 个人博客 一.List java 中的 List 是一种类似于列表的集合,Java集合----Map说过...

  • 分享一篇大佬的笔记,List集合特点+常见方法讲解,建议收藏!

    List集合 java.util.List接口extends Collection接口 List接口的特点: 有序...

  • 集合

    java集合接口有List,Set,Map。 List和Set都实现了Collection(对集合排序,遍历)接口...

  • java集合

    java集合 集合之间的关系 Collection├List│├LinkedList│├ArrayList│└Ve...

网友评论

      本文标题:Java集合—List

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