Set和List区别?Set如何保证元素不重复?
Set、List都实现了Collection接口,List是有序的列表,Set是无序的集合(TreeSet有序)

List实现类:

  • ArrayList :基于数组,可动态扩容
  • LinkedList:基于双向链表,可做堆栈使用
  • Vector:基于数组,基本相当于线程安全的ArrayList(基于synchronized),已被CopyOnWriteArrayList取代(基于ReentrantLock)
  • Stack:基于Vector实现,线程安全,先进后出(FILO,栈)

Set集合不会记住元素的顺序位置,不允许集合中有重复元素;
Set实现类:

  • HashSet:基于HashMap实现,允许null,
  • LinkedHashSet:基于LinkedHashMap实现,底层结构为哈希表结构+链表结构+红黑树
  • TreeSet:有序,基于TreeMap,红黑树

其他参见:https://blog.csdn.net/zhaohong_bo/article/details/87969753
具体见源码

Java 8 中 stream 相关用法
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。通常编写并行代码很难而且容易出错, 但使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。所以说,Java 8 中首次出现的 java.util.stream 是一个函数式语言+多核时代综合影响的产物。
参见博客:https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/

apache 集合处理工具类的使用
Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。
详见:https://www.cnblogs.com/crazylqy/p/4872236.html

不同版本的 JDK 中 HashMap 的实现的区别以及原因
jdk 1.8 HashMap做了优化,引入了红黑树
详见:https://blog.csdn.net/vking_wang/article/details/14166593

Collection 和 Collections 区别
java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

Arrays.asList 获得的 List 使用时需要注意什么
参见博文:https://blog.csdn.net/kusedexingfu/article/details/77824189

Enumeration 和 Iterator 区别
JavaDoc:在Java集合框架中,Iterator是用来替代Enumeration 的。
Iterator支持删除元素,并且方法命名完善了下

Enumeration
boolean hasMoreElements();
E nextElement();
Iterator
boolean hasNext();
E next();
void remove();

2) Iterator支持fail-fast机制,而Enumeration不支持

fail-fast 和 fail-safe
fail-fast:
当使用迭代器迭代一个集合的时候,如果有另外的线程在修改这个集合,那么很可能会抛出ConcurrentModification异常,java.util下的都是快速失败
fail-safe:
当使用迭代器迭代一个集合的时候,先对集合进行一次拷贝,所以其他线程更改集合元素不会影响本次迭代
详见:https://blog.csdn.net/u010889616/article/details/79954413

Java修炼之路——基础篇——Java集合类详解2相关推荐

  1. Java修炼之路——基础篇——Java集合类详解1

    SynchronizedList和Vector的区别 java.util.Vector java.util.Collections.$SynchronizedList Vector用同步方法,Sync ...

  2. Java修炼之路——基础篇——Java关键字

    1:transient 当对象被序列化时,transient阻止其修饰的对象进行序列化:当反序列化时,此对象的值不会被恢复. 2:instanceof 判断引用指向的对象,是不是某个类及其子类的实例对 ...

  3. Java修炼之路——基础篇——值传递

    什么是值传递?引用传递? 值传递:值传递是将变量的一个副本传递到方法中,方法中如何操作该副本,都不会影响原变量的值.引用传递:引用传递是将变量的地址传递到方法中,方法中操作该变量,会对其产生影响. 为 ...

  4. Java修炼之路——基础篇——数据类型

    基础数据类型: 整型(byte short int long ).浮点型.布尔型.字符型boolean:只表示一位的信息,true,false.默认为false,基本上占一字节char: 16位,2字 ...

  5. Java修炼之路——基础篇——枚举

    枚举的用法 每个枚举变量其实都是枚举类的一个实例. 枚举与单例 各种模式的单例模式,包括枚举实现的单例 //懒汉模式 class SingletonA {private static Singleto ...

  6. Java修炼之路——基础篇——String

    String 1:字符串的不可变性 什么是不可变对象?不可变对象是指创建后无法变更的对象 String为什么是不可变的?String类为final,并且内部字符数组也为final.所以String对象 ...

  7. Java修炼之路——基础篇——平台无关性

    Java如何实现平台无关性? 首先说无论是哪种语言,都需要经过操作系统和CPU来完成程序的运行.平台无关性指的是程序不会因为操作系统和处理器的不同而不能运行或者发生运行错误.而不同的CPU和OS组成的 ...

  8. JAVA学习之路--基础篇三

    目录 关于Java中从键盘输入的语句 nextxxx().next().nextLine()的区别 语句 if和if else语句 Switch语句 for语句 while和do..while bre ...

  9. 【备战春招/秋招系列】美团Java面经总结进阶篇 (附详解答案)

    <!-- MarkdownTOC --> 一 消息队列MQ的套路 1.1 介绍一下消息队列MQ的应用场景/使用消息队列的好处 ①.通过异步处理提高系统性能 ②.降低系统耦合性 1.2 那么 ...

最新文章

  1. java队列_如何彻底搞懂 Java 数据结构?CSDN 博文精选
  2. html web form id,小程序如何获取多个formId实现详解
  3. Maven中jar包冲突的解决方式
  4. 分布式存储-ceph
  5. CVE-2017-0004相关lsass拒绝服务漏洞杂谈
  6. Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之10.Web_工程结构
  7. 代码审计——命令执行
  8. php data类型转换,【原】超简单类型转换(DataTable
  9. Design Compiler指南——后综合过程
  10. 谷歌联合 Adobe 发布 Noto 字体【免费下载】
  11. React开发(118):报错处理
  12. 小程序和APP的差别是什么?
  13. Spring 使用注解注入 学习(四)
  14. 十、Shell脚本编程
  15. Delphi7串口通讯实例(含Spcomm控件)
  16. SIR模型的应用(2) - Influence maximization in social networks based on TOPSIS(3)
  17. 重磅 | 数据挖掘之父韩家炜:文本语料库的数据挖掘(附视频+PPT下载)
  18. 我看现在的seo培训机构
  19. 数学问题1 - 两个圆圈,小圆贴着大圆外部转过一圈,问小圆转几圈
  20. jQuery方法解析(一)append

热门文章

  1. 计算机绘画作品 星空,关于近期绘画作品《星空系列》的自述:
  2. c 编程 mysql结果集_使用mysql C语言API编写程序—MYSQL数据库查询操作(执行查询操作,获取查询结果的字段数,记录行数,...
  3. mooc数据结构与算法python版期末考试_数据结构与算法Python版-中国大学mooc-试题题目及答案...
  4. 想追身边的女孩?哥们我只能帮到你这份上了
  5. 您的屁股发热严重,请降温后使用。
  6. 薅羊毛丨5个平价好物,终于终于终于打折了!
  7. 深度学习框架再次升级,它们都有什么优点?
  8. 三个字帮大家总结一下刘强东事件
  9. linux主线程结束 子线程还能运行么,linux主线程和子线程
  10. java环境怎样搭建_如何学习JAVA?怎么搭建JAVA环境?怎么安装JDK?