1. Java集合体系结构(List、Set、Collection、Map的区别和联系)

Collection 接口存储一组不唯一,无序的对象

List 接口存储一组不唯一,有序(插入顺序)的对象

Set 接口存储一组唯一,无序的对象

Map接口存储一组键值对象,提供key到value的映射。Key无序,唯一。value不要求有序,允许重复。(如果只使用key存储,而不使用value,那就是Set)

2. Vector和ArrayList的区别和联系

Vector和ArrayList的区别和联系

实现原理相同,功能相同,都是长度可变的数组结构,很多情况下可以互用

两者的主要区别如下

1) Vector是早期JDK接口,ArrayList是替代Vector的新接口

2) Vector线程安全,ArrayList重速度轻安全,线程非安全

3) 长度需增长时,Vector默认增长一倍,ArrayList增长50%

3. ArrayList和LinkedList的区别和联系

两者都实现了List接口,都具有List中元素有序、不唯一的特点。

ArrayList实现了长度可变的数组,在内存中分配连续空间。遍历元素和随机访问元素的效率比较高;

LinkedList采用链表存储方式。插入、删除元素时效率比较高

4. HashMap和Hashtable的区别和联系

实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互用

两者的主要区别如下

1) Hashtable是早期JDK提供的接口,HashMap是新版JDK提供的接口

2) Hashtable继承Dictionary类,HashMap实现Map接口

3) Hashtable线程安全,HashMap线程非安全

4) Hashtable不允许null值,HashMap允许null值

5. HashSet的使用和原理(hashCode()和equals())

1) 哈希表的查询速度特别快,时间复杂度为O(1)。

2) HashMap、Hashtable、HashSet这些集合采用的是哈希表结构,需要用到hashCode哈希码,hashCode是一个整数值。

3) 系统类已经覆盖了hashCode方法 自定义类如果要放入hash类集合,必须重写hashcode。如果不重写,调用的是Object的hashcode,而Object的hashCode实际上是地址。

4) 向哈希表中添加数据的原理:当向集合Set中增加对象时,首先集合计算要增加对象的hashCode码,根据该值来得到一个位置用来存放当前对象,如在该位置没有一个对象存在的话,那么集合Set认为该对象在集合中不存在,直接增加进去。如果在该位置有一个对象存在的话,接着将准备增加到集合中的对象与该位置上的对象进行equals方法比较,如果该equals方法返回false,那么集合认为集合中不存在该对象,在进行一次散列,将该对象放到散列后计算出的新地址里。如果equals方法返回true,那么集合认为集合中已经存在该对象了,不会再将该对象增加到集合中了。

5) 在哈希表中判断两个元素是否重复要使用到hashCode()和equals()。hashCode决定数据在表中的存储位置,而equals判断是否存在相同数据。

6) 6) Y=K(X) :K是函数,X是哈希码,Y是地址

6. TreeSet的原理和使用(Comparable和comparator)

1) TreeSet中的元素不允许重复,但是有序

2) TreeSet采用树结构存储数据,存入元素时需要和树中元素进行对比,需要指定比较策略。可以通过Comparable和Comparator来指定比较策略。

3) 实现了Comparable的系统类可以顺利存入TreeSet。自定义类可以实现Comparable接口来指定比较策略。

4) 可创建Comparator接口实现类来指定比较策略,并通过TreeSet构造方法参数传入。这种方式尤其对系统类非常适用。

7. 集合和数组的比较(为什么引入集合)

数组不是面向对象的,存在明显的缺陷,集合完全弥补了数组的一些缺点,比数组更灵活更实用,可大大提高软件的开发效率而且不同的集合框架类可适用于不同场合。具体如下:

1) 数组的效率高于集合类.

2) 数组能存放基本数据类型和对象,而集合类中只能放对象。

3) 数组容量固定且无法动态改变,集合类容量动态改变。

4) 数组无法判断其中实际存有多少元素,length只告诉了array的容量。

5) 集合有多种实现方式和不同的适用场合,而不像数组仅采用顺序表方式。

6) 集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性调用即可实现各种复杂操作,大大提高软件的开发效率。

8. Collection和Collections的区别

Collection是Java提供的集合接口,存储一组不唯一,无序的对象。它有两个子接口List和Set。

Java中还有一个Collections类,专门用来操作集合类 ,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

set集合判断集合中是否有无元素_第八章 集合相关推荐

  1. set集合判断集合中是否有无元素_集合 (Set) | 一山不容二虎的 Python 数据类型

    点击上方"可乐python说"关注公众号,点击右上角 "..."选择"设为星标"第一时间获取最新分享! 前言 Hi,大家好,我是可乐, 今天 ...

  2. set集合判断集合中是否有无元素_一文了解 JavaScript 中的 Set(集合)- 对 Set 的扩展...

    阅读全文需要 4 分钟.主要介绍对 ES6 中的 Set 集合方法的扩展.阅读本文后,你能创建出对 Set 方法扩展,并且结合下期内容,将其发布到 NPM 中. 往期回顾 一文了解 JavaScrip ...

  3. set集合判断集合中是否有无元素_Python基础学习笔记(五)集合与字典

    本节知识大纲: 集合 字典 一.Set 集合的概念 1. set 集合的性质 set 集合是一组无序的且不能重复的集合,打印 set 集合时会自动消除重复的元素项: set 集合用大括号表示: set ...

  4. 遍历strs数组,并判断数组中每一个元素的长度, * 将长度为偶数的元素和长度为奇数的元素分别存放在两个集合中,

    package Day08;import java.util.ArrayList;/*** 二* 字符串数组strs中包含字符串{"12","345",&quo ...

  5. 输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的交集(交集的元素由两个集合中的相同元素构成),最后输出交集中的元素。

    [问题描述]输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的交集(交集的元素由两个集合中的相同元素构成),最后输出交集中的元素,要求在主函数中输入A和B数组,并输出交集 ...

  6. 【Dart 教程系列第 17 篇】Dart 之 every 判断数组中是否每个元素都满足指定的条件

    这是[Dart 教程系列第 17 篇],如果觉得有用的话,欢迎关注专栏. Dart 判断数组中是否每个元素都满足指定的条件用 every() 方法,源代码定义如下 bool every(bool te ...

  7. set集合判断集合中是否有无元素_Python入门教程笔记(五)集合(set)及函数

    三九.什么是set 在前面,我们学习了dict,知道dict的key是不重复的,当我们往dict里添加一个相同key的value时,新的value将会覆盖旧的value. 有的时候,我们只想要 dic ...

  8. js删除两个集合中共同元素_多个集合中的共同和独特元素

    js删除两个集合中共同元素 本周,我们将暂时中断较高级别的问题和技术文章,以解决我们中许多人可能面临的一些代码问题. 没什么花哨的或太辛苦的,但是有一天它可能会节省您15分钟的时间,偶尔回到基础上也很 ...

  9. java——定义一个功能将ArrayList 集合中的重复元素删除(java集合七)

    定义一个功能将ArrayList 集合中的重复元素删除 ArrayList 集合中是允许储存重复元素的 import java.util.ArrayList; import java.util.Ite ...

最新文章

  1. boost log 能不能循环覆盖_前端基础进阶(十四):深入核心,详解事件循环机制...
  2. 一份详细的“入坑Phd指南”---教你如何做笔记、整理参考书目、管理时间、如何写作、对自己和导师合理预期...
  3. 连接SQLite 创建ADO.net实体类
  4. BZOJ5319 洛谷4559 LOJ2551:[JSOI2018]军训列队——题解
  5. html表单的数据保存在哪里,提交和保存表单数据
  6. python面试经典问题_Python面试中最常见的25个问题-结束
  7. linux 进程间通信 dbus-glib【实例】详解一(附代码)(d-feet工具使用)
  8. 注释 —— 《clean code》读后感
  9. python代码性能分析_使用memory_profiler对代码进行性能分析会增加执行时间
  10. 从日志入手,保障 Kubernetes 稳定性
  11. android rtsp 延时,ijkplayer 单视频流直播延迟问题解决过程
  12. 4009-基于邻接表的边的删除(C++,附思路)
  13. mit oracle 350平衡线,MIT MI-350 CVT 平衡线_已售器材欣赏区_信谊音响_二手音响_音响发烧站_高级音响 - 音响贵族网...
  14. 命令行管理windows服务器角色
  15. npm 安装axios报错
  16. 计算机NIC配置,在主计算机或 VM 上创建新的 NIC 团队
  17. win10子系统基本备份
  18. 小技巧-如何在任何一个文件夹中打开cmd
  19. 简谈一下对自己的认识
  20. 建tcode維護自己創建的數據表(SE54/SM30)

热门文章

  1. 图像分割matlab阈值自动计算,图像分割的阈值算法matlab实现.doc
  2. 获取论坛cookie_注意:这是你成为Cookie时尚社区OG的最后机会!
  3. 10条买房错误思维,你中招了几条?
  4. mysql xtrabackup_mysql备份
  5. window.location.href 跳转失败
  6. 这样讲闭包,你终生难忘
  7. HttpClient那些事儿
  8. 关于安装 rst2pdf 时遇到的 setuptools过老的问题
  9. apache2.4.7 make报错[exports.lo] Error 1 解决方法
  10. [轉]解决Windows XP下缩略图显示模式下文件夹没有名称的方法