【java基础】集合框架

它其实是用来存储对象的容器。所有的集合框架都包含如下内容:
接口:是代表集合的抽象数据类型。
实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构。
算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。
集合的两个基本接口:Collection与Map

它会是后面非常有用的数据操作的帮助。

1、Collection

Collection接口,包含list接口和set接口
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
实现方法: Collections.binarySearch(列表,键值);二分查找法找到键值所在位置
Collections.reverse(列表);将列表中的值逆序排列

2、List(泛型容器)

List接口,长度可变,可重复,有序;使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。主要有ArrayList 和 LinkedList两个子类。
(1)ArrayList:
是list的一种数组形式的实现,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。优点:遍历速度快。
声明: List<泛型形式> list = new ArrayList();
//可以直接用接口list来开辟空间也可直接用ArrayList来开辟
实现方法: .add();方法可以在list后面添加内容
.get();方法可以获取相应位置的数组
.size();方法表示这个数组的容量大小
(2)LinkedList:
是list的一种链表实现。优点:添加、删除元素快
声明: LinkedList<泛型形式> linkedList = newLinkedList<>();
//可以直接用接口list来开辟空间也可直接用LinkedList来开辟
实现方法: .add();方法可以在linkedList后面添加内容
//也可以使用Arrays.asList();直接添加一组内容
.get();方法可以获取相应位置的链表
.size();方法表示这个链表的容量大小

3、Set接口

set接口,长度可变,不能重复,无序;<实现类有HashSet,TreeSet>。
声明: Set set = new HashSet<>();
实现方法: .add();方法可以在set后面添加内容
.size();方法表示这个set的容量大小

Set和List的区别

Set 接口实例存储的是无序的,不重复的数据。List存储的是有序的,可以重复的元素。
Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变
List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变

4、Map接口

是一些键值对<key,value>的集合,每一个键值对可以看做一个entry
三个实现类:HashMap,HashTable,TreeMap。最常用的是HashMap
声明: Map<String , String > map = new HashMap();
散列映射:HashMap,树映射:TreeMap
方法: .put(key,value);用来设置键值对
.get(key);用来获取key键相应的值
Set keySet();// 返回map中key的Set集合
Collection values();// 将map中的value以Collection的形式返回
Set<Map.Entry<K, V>> entrySet();// 返回map中多个项的Set集合(此方法适合既获取key又获取value的场景,非常实用)

Map.Entry

Entry<K, V> 是Map内部的接口,其中定义了一些方法:
K getKey(); // 返回此项对应的key
V getValue();// 返回此项对应的value
V setValue(V value);// 设置此项中value值

发布了23 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41022866/article/details/103962577