java集合框架相关

本文主要参照菜鸟教程及其他网站内容,侵删。

Java 集合框架(主要包括两种类型的容器),用来代表和操纵集合的统一架构。

1:集合(Collection),存储一个元素集合。

Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。集合

2:图(Map),存储键/值对映射。

所有的集合框架都包含如下内容:

  1. 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
  2. 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
  3. 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。
序号 接口描述
1 Collection 接口

Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

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

2 List 接口

List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。

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

3 Set

Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。

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

4 SortedSet
继承于Set保存有序的集合。
5 Map

Map 接口存储一组键值对象,提供key(键)到value(值)的映射。

6 Map.Entry
描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。
7 SortedMap
继承于 Map,使 Key 保持在升序排列。
8 Enumeration
这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

Set和List的区别

  • 1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。

  • 2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>

  • 3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector>

序号 类描述
1 Vector

该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍。

2 Stack
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
3 Dictionary
Dictionary 类是一个抽象类,用来存储键/值对,作用和Map类相似。
4 Hashtable

Hashtable 是 Dictionary(字典) 类的子类,位于 java.util 包中。

5 Properties
Properties 继承于 Hashtable,表示一个持久的属性集,属性列表中每个键及其对应值都是一个字符串。
6 BitSet
一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。

接口:

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

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

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

SortedSet,继承于Set保存有序的集合。

Map 接口存储一组键值对象,提供key(键)到value(值)的映射。

Map.Entry,描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。

SortedMap,继承于 Map,使 Key 保持在升序排列。

类:

HashSet,该类实现了Set接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null的元素,但最多只能一个。

LinkedHashSet,具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。

TreeSet,该类实现了Set接口,可以实现排序等功能。

HashMap ,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。

TreeMap ,继承了AbstractMap,并且使用一颗树。

Vector ,该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍。

Stack ,栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

Dictionary 类是一个抽象类,用来存储键/值对,作用和Map类相似。

Hashtable 是 Dictionary(字典) 类的子类,位于 java.util 包中。

BitSet,一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。

Java集合中Map接口的使用方法

Map接口

  • Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value;
  • Map中的键值对以Entry类型的对象实例形式存在;
  • 建(key值)不可重复,value值可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值。
  • Map支持泛型,形式如:Map<K,V>
  • Map中使用put(K key,V value)方法添加 ,使用put()方法来修改Map中已存在的映射   // student.put(id, newStu);    Student stu = student.get(id);
  • 使用Map中的containsKey()和containsValue()方法来判断Map中是否存在键或值    // student.containsKey(stuID);   student.containsValue(new Student(null,name))   
  • 使用entrySet()方法遍历Map
  • 使用Map中的remove()方法删除Map中的映射

//eg:

Map的一般用法

1.声明一个Map :

Map map = new HashMap();

2 .向map中放值 ,注意: map是key-value的形式存放的,如:

map.put("sa","dd");

3 .从map中取值 :

String str = map.get("sa").toString,

结果是: str = "dd'       //  String value = map.get("key");

4 .遍历一个map,从中取得key和value :

Map m= new HashMap();

for(Object obj : map.keySet()){

Object value = map.get(obj );

}


HashMap类

  • HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现
  • HashMap中的Entry对象是无序排列的
  • Key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复)

猜你喜欢

转载自blog.csdn.net/qq_41635653/article/details/86744347