首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 基础(四)——集合源码解析 List

List 接口 前面我们学习了Iterator、Collection,为集合的学习打下了基础,现在我们来学习集合的第一大体系 ListList 是一个接口,定义了一组元素是有序的、可重复的集合。...List 继承自 Collection,较之 Collection,List 还添加了以下操作方法 位置相关:List 的元素是有序的,因此有get(index)、set(index,object)、add...List的抽象实现类 AbstractList AbstractList 继承自 AbstractCollection 类,实现了 List 接口。...现在我们来看看扩容机制,假设我们现在有一个集合 list,里面正好含有10个元素,此时,我们调用 add(object)方法添加一个元素,看看是怎样执行扩容操作的。 ? ?...Stack Stack 继承自Vector,也是一个线程安全的集合。 Stack 也是基于数组实现的。 Stack 实现的是栈结构集合 什么是栈结构?

54540

java集合【7】-- List接口源码解析

1.List接口的特性 java.util.List 接口继承于 Collection 接口,与Map最大的不同之处,在于它属于单列集合,相当于一个列表,有以下这些特点: 有顺序,按照添加的顺序存储,... 下面是List接口的继承关系: [20200314165852.png] 2.List接口的源码解析 继承于Collection接口,有顺序,取出的顺序与存入的顺序一致,有索引,可以根据索引获取数据...3.相关子类介绍 说起List的实现子类,最重要的几个实现类如下: ArrayList:底层存储结构是数组结构,增加删除比较慢,查找比较快,是最常用的List集合。线程不安全。...LinkedList里面的节点为null怎么保存数据?节点为null确实不能保存数据,但是数据是保存在节点下面的item里面的,所以,item可以为null。...= 0; } 指定index,插入一个集合,和前面不一样的地方在于复制之前,需要计算往后面移动多少位,不是用for循环去插入,而是一次性移动和写入。

61300
您找到你想要的搜索结果了吗?
是的
没有找到

List集合

1、List概述 1.1、什么是List java.util.List 接口继承自 Collection 接口,是单列集合的一个重要分支,习惯性地会将实现了 List 接口的对象称为List集合。...在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。 List集合中元素有序,即元素的存入顺序和取出顺序一致。...1.2、List特点 List是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。...那么集合中,元素的存储就是按照11、 22、33的顺序完成的 List是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理) List中可以有重复的元素,通过元素的equals...c.add("孙悟空"); c.add("白骨精"); c.add("唐三藏"); c.add("八戒"); //遍历 集合

80810

List集合

List集合 1、List集合 1.1 List接口的方法 1.2 案例:元素的增删改查 1.3 List接口的实现类 1.3.1 ArrayList类 1.3.2 LinkedList类 1.3.3...List集合中的元素是有序、可重复的。    List集合关心集合是否有序,而不关心元素是否重复。...1.1 List接口的方法   List除可以从Collection集合继承的方法,List集合中还添加了一些根据索引来操作集合的方法。...因为List接口是Collection接口的子接口,因此之前Collection接口的方法,List接口也同样适用,Collection集合的遍历方式也同样适用于List接口的集合。...集合的遍历   因为List集合也属于Collection系列的集合,此前Collection集合支持的foreach遍历和Iterator遍历对于List集合来说仍然适用,这里就不再重复,下面介绍List

61530

Java集合List集合

List集合 List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。 List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。...List集合里添加了一些根据索引来操作集合元素的方法 一、ArrayList ArrayList是List接口的典型实现类,本质上,ArrayList是对象引用的一个变长数组。...注:Arrays.asList(…) 方法返回的 List 集合既不是 ArrayList 实例,也不是 Vector 实例。...Arrays.asList(…)返回值是一个固定长度的 List 集合。...List集合子类Vector这个类已经不常用了, 我就说里面的一个方法, Elements方法, 这个方法的返回值是枚举接口, 里面有两个方法, 判断和获取。

1.6K20

Java 集合框架(3)---- List 相关类解析(下)

不过不管怎么叫它,它的功能不会遍,我们经常会用它作为动态管理数组元素的集合类。 我们先来看一下它的类继承图: ?...其实关于补码还有一点特殊的规则,比如 0 和对应数据类型的最大负值是怎么表示的,有兴趣的小伙伴可以自己查阅一些资料。...ArrayList 采用数组来储存元素值,因此它的插入元素和删除元素操作的效率并不高(O(N) 的时间复杂度),所以它不适用于需要进行频繁插入和删除元素操作的场合中,那么如果我就需要频繁进行插入和删除元素等操作怎么办呢...c 中的所有元素按照集合 c 迭代器遍历顺序插入到当前 List 从 index 下标开始的位置, * 如果下标 index 越界,抛出 IndexOutOfBoundsException 异常...好了,到这里我们就把 List 接口下的一些具体类解析完了。

64840

Java 集合框架(2)---- List 相关类解析(上)

前言 在上篇文章 Java 集合框架(1)— 概述 中我们从大体上看了一下 Java 中的集合框架,包括 List 、Set、Map 接口的一些介绍并且解释了一些接口中声明的相关方法用法。...从这篇开始,我们将一起来看一下 Java 集合框架中一些具体的类的解析,了解它们的运行原理。先从 List 接口下的相关类开始。 ?...* 方法等同于: * List list = new ArrayList(size()); * for (E e : this) * list.add(...> e2 = ((List<?...好了,这篇文章我们一起看了一下 AbstractCollection 、AbstractList 类,并对相关涉及到的类进行了解析,也是为接下来打好了基础,下篇文章我们将一起来解析一些常用的线性结构具体类

56640

list集合转化为数组_list集合转成数组

; public class Demo4_AsList { /** * 数组转换成集合 * 数组转换成集合虽然不能增加或减少元素,但是可以用集合的思想操作数组,也就是说可以使用其他集合中的方法 */...public static void main(String[] args) { //demo1(); //demo2(); //集合转数组,加泛型的 ArrayList list = new ArrayList...list = Arrays.asList(arr); 基本数据类型的数组转换成集合,会将整个数组当作一个对象转换 //System.out.println(list); Integer[] arr =...{11,22,33,44,55}; //将数组转换成集合,数组必须是引用数据类型 List list = Arrays.asList(arr); System.out.println(list); }...public static void demo1() { String[] arr = {“a”,”b”,”c”}; List list = Arrays.asList(arr); //将数组转换成集合

85820

【Kotlin】集合操作总结 ( List 集合 | MutableList 集合 | List 集合遍历 | Set 集合 | MutableSet 集合 | Map 集合 | 可变 Map集合 )

文章目录 一、List 创建与元素获取 二、安全获取集合元素 1、getOrElse 函数 2、getOrNull函数 三、List 创建与元素获取代码示例 四、MutableList 可变列表集合...五、修改 MutableList 集合的 mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除的元素 六、List 集合遍历 七、List...Map 集合 一、List 创建与元素获取 ---- Kotlin 中的集合分为两类 , 只读集合 和 可变集合 ; 调用 listOf 函数 , 可以 直接创建 List 集合 ; 通过 [] 下标可以...转为 只读列表集合 val list: List = mutableList.toList() // 将 只读列表集合 转为 可变列表集合 val mutable...与 Set 之间相互转换 ---- 调用 List#toSet() 函数 , 可以将 List 集合转为 Set 集合 , 转换过程中会 自动删除重复的元素 ; 调用 List#distinct()

4.8K20

Java集合-List

Java集合-List List接口(java.util.List)代表着有序的对象集合List中包含的元素可以根据它们在List中的内部顺序进行插入、访问、迭代和删除,元素的顺序就是这个数据结构被称为列表的原因...List 和Set List和Set非常相似,都代表了一组元素的集合,但是也有一些明显的不一样, 这些差异反映在List和Set接口提供的方法中。...创建List 通过List的实现创建List实例,下面是代码: List listA = new ArrayList(); List listB = new LinkedList(); List listC...从List中删除所有元素也被称为清除List,下面是代码: List list = new ArrayList(); list.add("object 1"); list.add...List大小 可以通过size()获取List的大小,也就是List中元素的个数: List list = new ArrayList(); list.add("object 1

2.5K40

Map集合List集合总结

Map集合List集合哪个效率更高 List接口 List集合是一个元素有序(存储有序)、可重复的集合集合中的每个元素都有对应的索引,以便于查询和修改,List集合是允许存储null值的。...ArrayList集合 ArrayList集合List接口的实现类,有以下特点: 1.有序,有索引 2.元素可以重复 3.可以存储null值 4.随机访问速度快,修改快,增加/插入或者移除/删除的效率慢...5.线程不安全 注意:List集合的实现类想要实现去重复的话: 思想:   1、首先要创建一个新的集合。   ...Vector集合   Vector集合也是List接口一个实现类,底层数据结构是数组,插入和移除性能较差,线程安全,效率低。...总结: ArrayList集合和Vector集合   ArrayList和Vector都是基于数组实现的list类,所以ArrayList和Vector封装了一个动态的,允许再分配的Object[]数组

58420

List集合源码分析

怎么回事?原来是这样啊!...既然我们知道他是在集合中,那么我就顺着他的父类寻找,先看一下List,没有发现,List在向上是collection,这时我们看看他的方法: @SuppressWarnings({"rawtypes",...> list, Random rnd) { int size = list.size(); if (size < SHUFFLE_THRESHOLD || list instanceof...elementData, newCapacity); } 缺点是向指定的索引位置插入对象或删除对象的速度较慢.因为指向索引位置插入对象时,会将指定索引位置及之后的所有对象相应向后移动一位 Vector集合与...ArrayList集合没有本质区别,因为Vector中方法和ArrayList的方法是一致的,但是每个方法上都有synchronized 关键字,所以说Vector集合是线程安全,但是也正因为如此,vector

39330
领券