java集合有哪些

Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:

Collection

Collection

Collection

Collection

Collection

Collection

Vector

1) 底层数据结构是数组,查询快,增删慢

2)线程安全,效率低

基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不可能超越Array。所以,在可能的情况下,我们要多运用Array。另外很重要的一点就是Vector“sychronized”的,这个也是Vector和ArrayList的唯一的区别。

ArrayList

1).底层数据结构是数组,查找快,增删慢。

2). 线程不安全,效率高

同Vector一样是一个基于Array上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但是当运行到多线程环境中时,可需要自己在管理线程的同步问题。

LinkedList

1) 底层数据结构是链表,查询慢,增删快

2)线程不安全,效率高

LinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方面的内容:

1. 节点本身的数据(data);

2. 下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像基于Array的List一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。

Hashset集合:

1) 底层数据结构是哈希表,哈希表依赖两个方法hascode ()和equals()方法

2)两个方法的执行顺序:

首先判断hascode()值是否相同

是:继续执行equals()方法,看其返回值

是true:说明元素重复,不添加

是false:就直接添加元素

否:就直接添加到集合

Treeset集合:

1)底层数据结构是二叉树

总结:

1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ];

2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];

3. 所有的List中可以有null元素,例如[ tom,null,1 ];

4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。

HashSet:虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。

php中文网,大量的免费Java入门教程,欢迎在线学习!

集合有哪些 java_java集合有哪些相关推荐

  1. java三大集合_java中三大集合框架

    一.List集合 1.List实现的超级父类接口:Collection 存储一组不唯一(允许重复),有序的对象. 2.了解ArrayList类 A):定义的格式:ArrayList 集合名 =  ne ...

  2. 【Groovy】map 集合 ( map 集合遍历 | 使用 map 集合的 each 方法遍历 map 集合 | 代码示例 )

    文章目录 一.使用 map 集合的 each 方法遍历 map 集合 二.代码示例 一.使用 map 集合的 each 方法遍历 map 集合 遍历 map 集合 , 可以调用 map 集合的 eac ...

  3. 【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ << “ 操作符重载 | 使用集合中的 “ << “ 操作符添加一个元素 | 使用集合中的 “ << “ 操作符添加一个集合 )

    文章目录 一.集合中的 " << " 操作符重载 1.使用集合中的 " << " 操作符添加一个元素 2.使用集合中的 " & ...

  4. 【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )

    文章目录 一.集合中的 " + " 操作符重载 二.集合中的 " - " 操作符重载 三.完整代码示例 一.集合中的 " + " 操作符重载 ...

  5. java 泛型集合 json_将泛型集合转换成分页json数据

    [java]代码库package com.sunweb.util.jsonfactory; import java.util.List; import com.sunweb.util.jsonfact ...

  6. (Java集合框架)Map集合

    Map集合 概述 现实生活中,常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对象 ...

  7. 离散数学反对称关系_【离散数学】1.2&1.3集合与元素,集合与集合之间的关系...

    离散数学是编程人员进阶的必修科目,是计算机专业学生的基础课程之一,多为理论性知识,较抽象. [离散数学]第一章(集合论基础)的小节主要有: 1.1集合的定义和表示 1.2集合与元素的关系 1.3集合与 ...

  8. scala使用zip合并两个集合为二元组集合

    tuple只能有tuple2到tuple22 Problem 你想要合并两个有序集合成为一个键值对集合 Solution 使用zip方法合并两个集合: scala> val women = Li ...

  9. lamda获取参数集合去空_JAVA集合框架知识

    1. Vector用法和ArrayList区别 (1) Vector的特有方法有哪些? void addElement(E obj) 将指定的组件添加到此向量的末尾,将其大小增加1. (2) Vect ...

最新文章

  1. 中文速读微生物组(宏基因组)前沿文献——这个可以有
  2. 批量保存到mysql_关于保存批量数据进入mysql
  3. android 服务器返回302,Android WebView 内处理302重定向不跳转的解决
  4. 安装pytorch时,在安装 future-0.18.2.tar.gz (829 kB)时报错:ModuleNotFoundError: No module named ‘_ctypes’解决办法
  5. 自然语言处理实践Task2
  6. 共享共建会让中国的5G加速吗?
  7. 华为NP课程笔记10-BGP案例讲解
  8. 环境类sci期刊排名一区_这本国产SCI论文期刊今年首破5分,明年或超6分
  9. 【Unreal】关于实时编码(live coding)退出UE编辑器C++ Class消失的问题
  10. 《Graphene-SGX: A Practical Library OS for UnmodifiedApplications on SGX (ATC‘17)》笔记
  11. 项目分析 移动终端自助点餐系统
  12. kettle能否自动建表_Kettle、Python实现报表自动化
  13. Divide by Zero 2021 and Codeforces Round #714 (Div. 2)B. AND Sequences(位运算 + 思维 + 排列)
  14. Java工具类cntool
  15. 嵌入式开发(四):海思Hi3559AV100交叉编译ffmpeg
  16. Vegeta靶机打靶过程及思路
  17. PHP会员登录实现记住密码功能 thinkPHP5
  18. MySQL锁相关面试题
  19. 使用Arduino控制机械臂
  20. 大规模文件存储怎么办?10分钟学会阿里OSS对象存储

热门文章

  1. poi处理word内容的公式_Java 使用 POI 操作 XWPFDocument 中的 XWPFParagraph(段落)对象的属性略解 Wor - 链滴...
  2. 字节跳动自研线上引流回放系统的架构演进
  3. uniapp 自定义下拉框
  4. oracle10g windows7
  5. 关于tink的碰撞检测类【1】
  6. 深入了解passive-interface
  7. android Camera 设置焦距
  8. Java12 新特性
  9. 【pycharm】py文件开头注释如何设置?操作很简单一看就会
  10. 菜鸟学Python之求水仙花数