Java 06集合框架

集合框架

在存储信息时如果使用数组,那么必需要给出一个固定的长度,且存储空间不一定全部使用,且插入、删除操作数据时效率低下,而集合可适用于多种不同的存储方式及数据类型。

Java 集合框架提供了性能优良、使用方便的接口和类,它们都位于java.util包中

Java集合框架包含的主要内容及彼此之间的关系
在这里插入图片描述
Collection接口

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

List接口

List接口常用类有ArrayList和LinkedList 存储一组有序可重复且可容纳所有类型对象,包括null的值

1.ArrayList 存储存储多个有序的数据,遍历元素和访问元素的效率高。
2.LinkedList 采用链表存储方式,插入,删除元素的效率高。(可用作堆栈和队列)

Set接口

Set接口继承Collection接口存储一组唯一不允许重复,无序的对象。

Map接口

Map接口用于处理键值映射数据,每个元素都由一个键对象和值对象组成

1.Hashtable 继承自Dictionary类,是一个线程安全,不予许出现null值的类。
2.HashMap 实现了Map接口,是一个非线程安全,键值允许出现null值的类。

ArrayList和Linkendlist的使用

//ArrayList声明方式
List list=new ArrayList();
ArrayList al=new ArrayList();
//Arraylist的添加,删除数据方式
list.add(...);
list.remove(int index/Object o);
//获取数组长度及数据
list.size();
list.get(int index);
//判断是否存在元素
list.contains(Object o);

//LinkendList声明
List list=new LinkedList(();
LinkedList li=new LinkedList();
//添加方式可指定头部和尾部的添加
list.addFirst(Object o);
list.addLast(Object o);
//删除也可指定头部或尾部
list.removeFirst();
list.removeLast();

HashMap的使用

//声明方式
Map map=new HashMap();
//添加数据
map.put(Object key,Object value);
//根据键返回值 不存在返回null
map.get(Object key);
//删除元素
map.remove(Object key);
//返回键或值或者键值对的集合
map.key();
map.values();
map;
//判断元素是否存在
map.containsKey(Objet key);
//判断集合是否存在
map.isEmpty();
//清空所有元素
map.clear();

迭代器 Iterator

Iterator为集合而生,用于实现集合的遍历,它隐藏了各种集合实现类的内部细节,提供了遍历集合的统一编程接口。

Collection 接口的Iterator()方法返回一个iterator,然后通过iterator接口的两个方法可实现遍历。

	1. hasNext(); 判断是否存在另一个可访问的元素。
	2. next(); 返回要访问的下一个元素。
//遍历ArrayList集合
Iterator its=对象.iterator();
while(its.hasNext()){
	对象类型  对象名=(对象类型)its.next();
	//根据存储对象进行类型转换  然后通过对象名进行取值
}

//遍历HashMap集合
Set keys=集合名.keySet();//取出key的集合
Iterator it=keys.iterator();
while(it.hasNext()){
	String key=(key类型)it.next();//取出key
	集合对象类型 对象名=(集合对象类型)集合名.get(key);//根据key取出对应的值
	//通过对象名拿出 values
}

Java泛型集合

使用泛型集合在创建对象时指定集合中元素的类型,从集合中取出元素时无须进行类型强制转换,如果把非指定类型存入会出现编译错误,保证了数据的安全性。

//泛型集合的声明
List<T> list=new ArrayList<T>();
Map<K,V> map=new HashMap<K,V>();

//使用加强版的for进行遍历

//List泛型集合
for(T item:list){
//直接用 item进行取值 无须类型转换!
}

//Map泛型集合
Set<T> keys=map.keySet();
Iterator<T> it=keys.iterator();
while(it.hasNext()){
T key=it.next();
T va=map.get(key);
}
//根据键和集合存储的值类型进行接收取出的键值 无须进行类型转换

------------------------------------------------------------------

//利用加强版的for 取出键值对
for(Map.Entry<K,V> en : map.entrySet()){
	en.getKey();
	en.getValue().属性;
}

–资料–
Read More

发布了10 篇原创文章 · 获赞 7 · 访问量 686

猜你喜欢

转载自blog.csdn.net/weixin_44924238/article/details/103124755