目录
Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于Java.unit包中
接口 collection和继承接口List、Set,接口Map
List的实现类:ArrayList和LinkedList
Set的实现类:HashSet和TreeSet
Map的实现类:HashMap和TreeMap
集合操作工具类Collections:提供了对集合进行排序、遍历等多种算法实现
Collection接口存储一组不唯一,无序的对象
List接口继承Collection接口,存储一组不唯一,有序(插入顺序)的对象
Set接口存储一组为一,无序的对象
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和访问元素的效率比较高。
LinkedList采用链表狮子·存储表·方式。插入,删除元素时效率比较高
方法名 | 说??? 明 |
boolean add(Object o) | 在列表的末尾顺序添加元素, 起始索引位置从0开始 |
void add(int index,Object o) | 在指定的索引位置添加元素。 索引位置必须介于0和列表中元素个数之间 |
int size() | 返回列表中的元素个数 |
Object get(int index) | 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换 |
boolean contains(Object o) | 判断列表中是否存在指定元素 |
boolean remove(Object o) | 从列表中删除元素 |
Object? remove(int index) | 从列表中删除指定位置元素, 起始索引位置从0开始 |
方法名 | 说??? 明 |
void? addFirst(Object o) | 在列表的首部添加元素 |
void? addLast(Object o) | 在列表的末尾添加元素 |
Object? getFirst() | 返回列表中的第一个元素 |
Object? getLast() | 返回列表中的最后一个元素 |
Object? removeFirst() | 删除并返回列表中的第一个元素 |
Object? removeLast() | 删除并返回列表中的最后一个元素 |
ArrayList | LinkedList | |
存储方式的区别 | ArrayList实现了长度可变的数组,在内存中分配连续的空间。 | LinkedList采用链表存储方式。 |
使用场合的区别 | ArrayList遍历元素和随机访问元素的效率比较高,插入、删除、修改操作频繁时性能低下。 | LinkedList插入、删除、修改元素时效率较高,查找效率较低。 |
Set接口存储一组唯一,无序的对象
Set接口常用的实现类:HashSet
HashSet集合的特点
集合内的元素是无序排列且不允许重复。
HashSet集合的查找效率高。
允许集合元素是null。
方法名 | 说??? 明 |
boolean add(Object o) | 如果Set中尚未包含指定元素o,则添加指定元素o |
void clear(int index,Object o) | 从Set中移除所有元素 |
int size() | 返回Set中的元素个数 |
boolean isEmpty() | 如果Set不包含任何元素,则返回true |
boolean contains(Object o) | 如果Set包含指定元素o,则返回true |
boolean remove(Object o) | 如果Set包含指定元素o,则将其移除。 |
Map接口存储一组键值对象,提供key到value的映射
Map接口常用的实现类HashMap
HashMap类的特点
不保证映射的顺序,特别是不保证顺序恒久不变
数据添加到HashMap集合后,所有数据的数据类型将转换为Object类型,所以从其中获取数据时需要进行强制类型转换
方法名 | 说??? 明 |
Object put(Object key, Object val) | 以“键-值对”的方式进行存储 |
Object get (Object key) | 根据键返回相关联的值,如果不存在指定的键,返回null |
Object remove (Object key) | 删除由指定的键映射的“键-值对” |
int size() | 返回元素个数 |
Set keySet () | 返回键的集合 |
Collection values () | 返回值的集合 |
boolean? containsKey (Object key) | 如果存在由指定的键映射的“键-值对”,返回true |
Set??????????? entrySet() |
泛型是JDK1.5的新特性
泛型的本质是参数化类型:将所操纵的数据类型指定为一个参数,使代码可以应用于多种类型。
定义:将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性。
优点:所有的转换都是自动和隐式进行的,简单安全。提高了代码的重用率
泛型集合
JDK1.5中使用泛型改写了集合框架中的所有类和接口,也就是泛型集合
典型的泛型集合ArrayList<E>、HashMap<K,V>
<E>、<K,V>表示该泛型集合中的元素类型
泛型集合中的数据不再转换为Object
LInkList和HashSet等也有自己的泛型形式。
泛型集合的优点
存储数据时进行严格类型审查,确保只有合适类型的对象才能存储在集合中
从集合中 检索对象时,减少了强制类型转换。
Callections算法类
Collections类是Java提供的一个集合操作工具类。
Collections类定义了一系列用于操作集合的静态方法,用于实现对集合元素的排序、查找和替换等操作。
Collections和Collection是不同的,前者是集合的操作类,后者是集合接口
常用方法
sout(); 排序
binarySearch();? ? ? ? 查找
max() \ min();? ? ? ? 查找最大值\最小值