Java集合框架一览笔录

Wesley13
• 阅读 576

1、集合概念

集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所以的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,java5还在java.util.concurrent包下提供了一些多线程支持的集合类。

集合分为两大类:Collection、Map。

Collection(集合),每个元素存储单个数据(Java基本数据类型或者对象),通常这些元素都服从某种规则

  1) List必须保持元素特定的顺序

  2) Set不能有重复元素

  3) Queue保持一个队列(先进先出)的顺序

Map(哈希),每个元素存储 "键值对"的 数据。

2、集合与数组的区别?

数组在初始化时候就必须指定数组长度,因此数组只能保存固定个数的元素。

集合在初始化时候一般可以不指定集合大小,因此集合可以保存不确定个数的元素。

另外,集合的元素,存储可以不仅是单个数据,还可以是 键值对 的数据。

3、集合类架构层次

Java集合框架一览笔录

Arrays和Collections是用来操作数组、集合的两个工具类,例如在ArrayList和Vector中大量调用了Arrays.Copyof()方法,而Collections中有很多静态方法可以返回各集合类的synchronized版本,即线程安全的集合实现,如果要用线程安全的结合类,首选java.util.concurrent并发包下的对应的集合类。

Java集合框架一览笔录

java.util.concurrent并发包提供了基本线程安全的各类容器。其中队列分为阻塞队列、非阻塞队列。

4、迭代器Iterator

通过Iterator,可以遍历任何Collection类集合,Map的键集合或者值集合。

迭代器允许调用者在迭代过程中移除元素。

使用迭代器更加线程安全,因为它可以确保,在当前遍历的集合元素被更改的时候,它会抛出ConcurrentModificationException。

什么是fail-fast

每次我们尝试获取下一个元素的时候,Iterator fail-fast属性检查当前集合结构里的任何改动。如果发现任何改动,它抛出ConcurrentModificationException。Collection中所有Iterator的实现都是按fail-fast来设计的。(并发容器则是fast-safe设计的)

fail-fast与fail-safe有什么区别?

Java.util包中的所有集合类都被设计为fail-fast的,而java.util.concurrent中的集合类都为fail-safe的。Fail-fast迭代器抛出ConcurrentModificationException,而fail-safe迭代器从不抛出ConcurrentModificationException。

更多请期待。(2017.9.19)

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java8新特性
Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str
Wesley13 Wesley13
3年前
java基础(7)集合与泛型
第一部分:Collection集合1collection集合概述集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map。Collection是所有单列集合的父接口,因此在Collection中定义了
Wesley13 Wesley13
3年前
java集合基础复习
温故知新,好一段学习时间过后到了收割的季节。java中集合java.util包下的一个集合根接口collection,其子接口list和set,map接口定义keyvalue键值对。ArrayList、linkedlist、vector实现了list接口。也称线性集合。数据有序可重复。ArrayList:底层实现的数组,线程不安全的,效率
执键写春秋 执键写春秋
3年前
Java集合之综合论述
1.Java集合1.1集合应用场景1.无法预测存储数据的数量的情况下,2.同时存储一对一关系的数据3.需要进行数据的增删4.数据重复问题1.2集合框架的体系结构集合框架分为两类,一是Collection,用于存储类的对象。二是Map,以键值对的形式存储信息。Collection主要有三个子接口,List(序列),Queue(队列
zdd小小菜鸟 zdd小小菜鸟
2年前
Java基础面试
Java基础面试1.Java集合类的总结tex1、Iterator:Collection(值)、Map(键值对);2、Collection:Set(无序不重复)、List(有序可重复)、Queue;3、Set:H
Wesley13 Wesley13
3年前
Java最常见的面试题:模块二
容器18\.java容器都有哪些?常用容器的图录:19\.Collection和Collections有什么区别?java.util.Collection是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java类库
Wesley13 Wesley13
3年前
Java集合从菜鸟到大牛演变
先来看一张集合概况图,这里从上到下列举了几个最经常用的集合!(http://img.javastack.cn/1587459547246301.png)1、集合接口java.util.Collection是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java类库中有很多具体的实现。Coll
Wesley13 Wesley13
3年前
Java集合框架之概括
Java集合框架之概括java集合框架是一种数据结构,即以某种形式将数据组织在一起的集合。Java集合框架支持以下两种类型的容器。一种是为了存储一个元素集合,简称集合(collection)。如ArrayList,LinkedList另一种是为了存储键/值对,称为图(map),如HashMa