相信每个人从小到大都听过集合这个词语!只要是都上过学的小可爱都会听到“集合”这个可怕又熟悉的口号。从小学到高中,基本每天早上都会听到一个口号“集合”当你听到这可怕的口号时候证明你一天的时光正式开始了!

不管是生活中还是在学习中、工作中基本都能听到“集合”这个小朋友。

其实在计算机世界中也会有集合这个概念,而且这个概念还挺流行的。java中的集合分为四类:

第一个是List列表,第二个是Queue队列,第三个是Set集合,第四个是Map映射。

今天所要介绍的List。

List接口存储的数据必须有序的,不唯一(可重复)。啥叫有序和无序呢?唯一与不唯一又有啥区别呢?

所谓的有序就是List下标是有序的,感觉说和没说没啥区别!但注意“下标这个词语”,我们大家都做过早操和排过队,有第一排,第二排,第一列,第二列这种类似的区分。而List下标类似于这样子,第一个是0,第二个是1,以此来递增上去,这就是有序的。

那唯一和不唯一呢?这个更好理解了。唯一性就是独一无二的存在,不唯一意指:意义上是一样的存在,可能出现两个相同的东西。这就是唯一性与不唯一性。

List接口表示有序的集合,序列,提供了索引index,可以通过index对集合进行增删改查。

那集合如何实现呢?相当于如果你把一大群学生如何让他们听从你的安排呢?如果是你是小学生班主任的话,你的鞭子相当于一个ArrayList实现类,你用这个鞭子实现学生排成一排!

List list=new ArrayList();

list.add("小明");

list.add("大明");

list.add("老杨");

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

结果:[小明, 大明, 老杨]。

ArrayList是List接口的实现类,底层数据结构是数组的可变有序列表。

ArrayList是一个包装类,内部封装了一个数组Object[ ] elementData,默认容量是10个空间,当使用add()方法时,它第一件事是确认容量够不够,如不够,则按照 newCapacity =oldCapacity + oldCapacity/2的规则拓容。

如果你想自己手动拓容的时候,可适当使用ensureCapacity(minCapacity)和trimToSize来提供拓容性能和节省拓容空年间。

ArrayList 是线程不安全的可变数组版本。在多线程环境下使用要注意。

我们可通过Collections.synchronizedList(newArrayList(…));操作得到一个线程安全的ArrayList。

ArrayList中的迭代器在List集合结果变化后,我们调用迭代器中的方法时会快速抛出ConcurrentModificationException异常通知程序,以免造成损失。

List list=new Vector();

Vector()也是List的实现类,底层数结构也是数组的可变有序列表,但它是线程安全的。因为大部分方法都加了“synchronized”关键字以保证线程环境下的线程安全问题。但有时候我们还是选择ArrayList这个实现类多一点,因为ArrayList效率要比Vector高。

LinkedList是List接口的实现类,底层数据结构是链表。LinkedList线程不安全,它和ArrayList一样,但它的查询效率低。

何为链表?你可以想象成为双头蛇,它类似于双头蛇!

结语:List属于集合,和它一样是集合的还有三个。Set,Map,Queue。

List有几个实现类:

ArrayList实现类,底层数据结构使数组结构,查询速度快,增删改慢。

LinkList实现类,底层使用链表结构,增删快,查询慢。

Vector实现类:线程安全,线程同步。效率比ArrayList低。

举报/反馈

计算机语言列表,计算机语言java中得List相关推荐

  1. 检查两个列表在Java中是否相等

    介绍: Java中的列表是按自然顺序排列的. 因此,如果两个列表包含相同顺序的完全相同的元素,则认为它们是相等的. 在本教程中,我们将看到如何在Java中比较两个列表是否相等. 我们还将介绍仅比较两个 ...

  2. java 合并两个列表_如何在Java中合并两个列表?

    java 合并两个列表 Merging two lists in Java is often a useful operation. These lists can be ArrayLists or ...

  3. java 实现内存数据表_数据结构 Java中的内存

    根据线性表的实际存储方式,分为两种实现模型: 顺序表 ,将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示. 链表 ,将元素存放在通过链接构造起来的一系列存储块中. 一.顺 ...

  4. java 侵入性_侵入式列表实现Java?

    我不知道任何现有的实现(不,我不认为普通的Java集合是侵入性的). 这可能是因为这个列表在Java中的唯一主要优点是当您已经有要删除的元素(并且在该位置没有迭代器)时,将快速的remove()调用. ...

  5. Java中的循环链表

    与链表相比,循环链表略有不同.在循环链表中,最后一个节点指向第一个节点,从而完成一整圈节点.换句话说,我们也可以说在这个链表中,最后一个元素不是空的.在这种类型的链表中,任何节点都可以作为起点.这意味 ...

  6. Java编程哪些书值得推荐及计算机语言java中得List[图]

    一.Java编程哪些书值得推荐? 书籍是人类进步的阶梯,在互联网不算发达的十年前(特指09年之前),学编程是要靠各种编程相关的书滴,大部分时间都必须沉迷于图书馆才能学好.现如今不同了,在线教育满天飞的 ...

  7. 计算机语言发展史及Java语言简介

     计算机语言发展史及Java语言简介 一 计算机语言发展史 1第一代语言 第一代语言或者机器语言是一种低级的面向计算机的程序设计语言,使用0和1表示各种指令. 2 第二代语言 汇编语言. 3 第三 ...

  8. Java中迭代列表中数据时几种循环写法的效率比较

    Java中经常会用到迭代列表数据的情况,本文针对几种常用的写法进行效率比较.虽然网上已经有了类似的文章,但是对他们的结论并不认同. 常见的实现方法: 1.for循环: [java] view plai ...

  9. java中怎样克隆,如何在Java中克隆列表?

    要克隆Java中的列表,最简单的方法是使用ArrayList.clone()方法- 示例import java.util.ArrayList; public class Demo { public s ...

最新文章

  1. nofollow标签_nofollow标签在网站中的运用
  2. GenXus学习笔记——Transaction的建立
  3. linux 内核io操作,关于Linux内核中的异步IO的使用
  4. 打线上包 测试_vue-cli项目分别打测试包(test)和生产包(prod)
  5. C++中sort排序之自定义排序cmp(入门)
  6. MySQL 数据库性能调优
  7. 网络安全审计系统产品竞品分析
  8. 洋流[Theocean flow]介绍----科普知识
  9. 缺少空格:The JSP specification requires that an attribute name is preceded by whitespace
  10. 全国25省市“智慧路灯”项目大汇总!
  11. 计算机网络【奈氏准则和香农定理】
  12. 爬取王者荣耀皮肤-点券领取
  13. vlookup(精确查找、区间查找、反向查找、多条件查找)
  14. URP shader 学习笔记
  15. SQL Server基础操作(此随笔仅作为本人学习进度记录三)
  16. 2022,itbird的年终总结报告
  17. python parser参数nargs=‘+‘涵义
  18. 如何设置虚拟机为静态IP
  19. 当当网创始人李国庆宣布离开当当,投身区块链再创业
  20. okl4 linux,Ubuntu下用skyeye运行OKL4

热门文章

  1. Python内置函数之 range()
  2. 《深度学习笔记》——深度神经网络的调试笔记
  3. 使用OpenCV和NumPy处理图像数据时,出现显示异常,图片经常出现空白
  4. Java代码优化技巧
  5. html元素不可见的三种方式
  6. 鼠标右键添加新建类型
  7. javax.mail.MessagingException: 553 authentication is required
  8. 简单干净的C#方法设计案例:SFCUI.AjaxValue()之二
  9. 通过phoenix导入数据到hbase出错记录
  10. SQL存储过程跨服务器访问