1:Collection接口:存放单个对象.
-List
- ArrayList
ArrayList是以数组创建,填满的时候扩容是根据1.5+1,不过之前需要跟原数组大
小 +1(minCapacity)比较,以大的为最新数组的容量。
1:缩小容量用trimToSize();
2:对非NULL用equals的方式寻找;
3:非线程安全;
- LinkedList
LinkedList基于双向链表机制实现,一个entry有previous,next指向。查找和删除
都须要遍历链表,非线程安全。
- Vector
Vector跟ArrayList基本原理一样,但在各个方法加了synchronized,所以线程安
全.扩容方法也不同,Vector有一个参数capacityIncrement,
当capacityIncrement>0的时候,扩大为size+capacityIncrement。如果=<0,就扩
大为size的两倍。
- Stack
Stack继承于Vector,在Vector的基础上实现后进先出(LIFO),提供
push,pop,peek(获取最后一个元素).
-Set
Set和List最大的区别是Set不可以放重复的元素,HashSet,TreeSet不支持get(int).
- HashSet
基于HashMap实现,非线程安全。
- TreeSet
基于TreeMap实现,非线程安全,支持排序,可以传入Comparator
2:Map接口:key-value
- HashMap
HashMap是数组与链表的结合体,它有四个属性:
key,value,hash,next.get(key)的时候首先通过key的hashcode查询,然后
用key的equals找到在链表的具体位置。
1:hash算法:hashcode & (lenght-1)取出在数组的位置。数组的长度都是2
的n次方。new hashmap的时候会把数组容量对应到2的N次方;
2:hashmap的三个因素:capacity,loadfactor,threshold;
threshold=capacity*loadfactor(12=16*0.75);当元素超越
threshold的时候会进行扩容resize.resize会重新计算现有元素的位置,
所以比较耗性能,所以当知道多少元素的时候,可以初始它避免resize;如有
1000个元素的时候,0.75*size>1000 和需要是2的N次方,所以size为
2048,new HashMap(2048)
3:对于key为null,会替换之前key为null的value,否则新建,next为第一个
entry.所以get的时候对key为null的总拿第一个进行遍历。
4:非线程安全,可以使用Collections.synchronizedMap。
- TreeMap
1:非线程安全。
2:如果没有传入comparator,root非null,当key为null时候,抛出
nullpointexception
分享到:
相关推荐
### JAVA基础-集合类 #### 一、集合的概述与分类 ##### 1. 集合概述 集合是Java编程语言中一种重要的数据结构,它用于存储一系列的对象。与数组相比,集合提供了更加灵活的方式来处理数据。集合的一个显著特点是它...
Java集合类是Java编程中非常重要的组成部分,它们提供了一种组织和管理数据的方式。Java集合框架主要由两个核心接口——`Collection`和`Map`构建。`Collection`接口又派生出三个子接口:`Set`、`List`和`Queue`。而`...
Java集合类知识点总结 Java集合类是Java语言中最基本的数据结构之一,用于存储和操作对象的集合。下面是Java集合类的相关知识点总结: 集合的定义 集合是只能存储对象的数据结构,对象类型可以不一样,长度可变。...
Java并发编程中,集合框架...理解JUC中的并发集合类,需要深入理解它们如何处理并发问题,以及它们与普通集合类在设计上的差异。这有助于我们在编写多线程程序时选择合适的集合类型,以实现高效、线程安全的数据管理。
C++ 函数的内存实现机制 ...类的非静态成员函数和普通函数一样,都是存储在代码段中的,并且具有相同的入口地址。类的成员函数可以通过指针调用,并且编译器将自动将对象的指针作为隐式参数传递给函数。
本测试主要针对Java集合知识进行考核,包括对象数组、集合与数组的区别、集合操作方法、并发修改异常处理、以及ArrayList、LinkedList和Vector等具体集合类的特点。 1. 对象数组是Java中的一种数据结构,它存储的是...
`Class`类在Java中扮演着特殊的角色,它不仅是一个普通类,而且是用于获取和操作类信息的关键。每个类在JVM中都有一个唯一的`Class`对象,存储了类的元数据,如类名、包名、字段和方法信息。当我们使用`getClass()`...
本资料集合了2018年至2020年间的考研真题,旨在帮助考生全面理解和掌握这两个学科的核心知识。 普通动物学是生物学的一个分支,主要研究动物的形态、结构、生理、发育、分类、分布和进化等基本问题。在这个部分,...
本集合包含10多种对MFC列表控件的扩展类,旨在提升其功能性和易用性。 1. **自定义视图模式** MFC列表控件默认支持图标、报告和小图标三种视图模式。扩展类可能增加了更多的视图模式,如详细信息视图,允许用户...
矿物的形态包括矿物单体和矿物集合体。矿物的物理性质包括透明度、光泽、颜色、条痕等。 矿物的物理性质 矿物的物理性质包括透明度、光泽、颜色、条痕、硬度、解理、断口等。透明度是指矿物透过可见光的能力。光泽...
这个集合不仅为IT爱好者提供了丰富的资源,也使得普通用户能够更加便捷地管理自己的电脑和生活。无论是为了深入了解自己的硬件设备,还是为了应对日常生活中对快速生成和读取二维码的需求,亦或是寻找各种实用工具以...
这个DVD管理系统很可能包含了一些类或数据结构,用于表示DVD对象,并提供了相应的接口来执行这些基本操作。 首先,增(Add)操作可能涉及创建一个新的DVD对象,然后将其添加到集合中。这可能通过一个方法实现,例如...
在这篇学习笔记中,我们将探讨几个关键的集合类,包括System.Array、ArrayList、Hashtable以及SortedList,以及它们的特点和常用方法。 首先,System.Array是所有数组的基类,它是一个抽象类,我们无法直接创建...
"managedwinapi"项目则提供了一种解决方案,它是一个集合了大量Windows API的托管包装类,极大地简化了开发者的工作。 1. Windows API与P/Invoke Windows API是由微软提供的,用于与Windows操作系统进行交互的一...
所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。集合里存存放的元素都是引用数据类型。 数组与集合的区别:(1)数组长度不可变且无法保存具有映射关系的数据;集合类用来保存数量...
- **并发安全**:针对多线程环境下的安全问题,提供了`ConcurrentHashMap`等并发安全的集合类。 4. **实用技巧**: - **集合工具类**:如`Collections`工具类提供了排序、查找等常用操作。 - **泛型使用**:通过...
- **Collections**:这是一个工具类,提供了大量静态方法来操作或返回集合类的对象。这些方法包括排序、查找、填充集合等。 #### 七、assert 的使用场景 - **用途**:从JDK 1.4开始引入,主要用于调试阶段测试布尔...
成员函数可以是普通函数,也可以是构造函数和析构函数。构造函数是用于初始化新创建的对象的特殊函数,其名称与类名相同且无返回类型。析构函数则是对象生命周期结束时自动调用的函数,用于清理对象可能占用的资源。...