集合(Set、List、Map)框架知识整理

java中集合是一系列泛型类,可用于创建集合类,以支持多种存储与管理对象。

集合里的接口和类都来自于 java.util.*包

主要分为:Collection(Set/List/Queue) 和 Map

集合分为:集(Set),序列(List),地图(Map)、队列(Queue)


一、集(Set):无序的/不允许存在重复元素

实现类:

Set<T> set =new HashSet<T>();

HashSet:基于 散列表 实现

常用方法:

①操作元素:

add(Object element):向Set中添加一个元素。

remove(Object element):删除Set中的指定对象。

clear():清空Set集合。

②判断元素:

isEmpty():判断Set中是否为空。返回 bollean 值。

contains(Object element):判断Set中是否含有 指定 元素。返回 bollean 值。

③其他

iterator():迭代器。对Set中的元素进行遍历

size();返回Set的元素个数。

//实例化
		Set<String> set=new HashSet<String>();
		set.add("1111");
		set.add("2222");
		set.add("3333");
		
		//方法1:迭代器遍历
		Iterator<String> it=set.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		//方法2:增强for循环遍历
		for(String str:set){
			System.out.println(str);
		}

二、序列(List):有序的/可存在重复值/长度可变

实现类:

List<T> list=new ArrayList<T>();

ArrayList:基于 动态数组 实现。

List<T> list=new LinkedList<T>();

LinkedList:基于 链表 实现。(ps:占用内存较大,但是批量处理插入删除操作的时候有优势)。

ps:虽说是有序的,但其实list采用的线性存储,没有特定的顺序,只是有固定的头尾序列。

常用方法:

①操作元素:

get(int index): 得到指定位置的数据。

set(int index,Object element):对指定位置,赋值。

add(Object element):在List的尾部增加一个元素。

add(int index,Object element):在List的指定位置放置一个元素。

addAll(Collection coll):在List中批量的添加一个新的集合。

addAll(int index,Collection coll):在List的指定位置添加一个新的集合。

remove(int index):删除指定位置的元素。

remove(Object element):删除指定值的元素。

clear();清空List

②判断元素:

isEmpty():判断List是否为空。

contains(Object element):判断List中是否包含 指定 元素

③查询元素:

indexOf(Object o):从前向后 查找List集合,返回第一次出现该元素的index。如果无,则返回-1。

lastIndexOf(Object o):从后向前 查找List集合,返回第一次出现该元素的index。如果无,则返回-1。

④其他方法:

iterator():迭代器

size():返回List中的元素个数。

subList(int fromIndex,int toIndex):返回集合中 fromIndex(包括) 到 toIndex(不包括) 之间的数据。

//实例化
		List<String> list=new ArrayList<String>();
		list.add("1111");
		list.add("2222");
		list.add("3333");
		
		//方法1:迭代器遍历
		Iterator<String> it=list.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		//方法2:for循环遍历(有头有尾的有序性)
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i));
		}
		//方法3:增强for循环遍历
		for(String str:list){
			System.out.println(str);
		}

三、地图/字典(Map): 有序的/长度可以动态改变/key值不能重复/无迭代方法

Map集合由 Key(键)集合 和 Value(值) 集合构成(即键值对)。

其中Key(键)集合本质是Set集合,所以不允许重复。

而Value(值)集合是一个Collection类。

实现类:

Map<K,V> map=new HashMap<K,V>();

HashMap:基于 散列表 实现

常用方法:

①操作元素:

get(Object key):返回指定Key值对应的Value值,若无则返回null。

put(Object ket,Object value):向Map中添加指定的新key-value值

putAll(Map<? extends K, ? extends V> m):向指定的Map中再插入一个新的Map集合。

remove(Object key):移除指定Key的键值对。

clear():清空Map。

②判断元素:

isEmpty():判断Map集合是否为空,返回boolean值。

containsKey(Object key):判断指定的Key值是否存在。返回boolean值。

containsValue(Object value):判断指定的Value值是否存在。返回Value值。

③查看集合:

keySey():返回所有键值对的Key集合

values():返回所有键值对的Value集合

size():返回Map中的 键值对 个数。

④遍历:

entrySet():讲Map中的键值对打包成一个对象( Set<Map<K,V>>)

Map.entry.getKey():根据Map.entry对象获取Key值

Map.entry.getValue():根据Map.entry对象获取Value值

//实例化
		Map<String,Integer> map=new HashMap<String,Integer>();
		map.put("id",12313);
		map.put("card", 1423412);
		map.put("num", 55756756);
		
		//增强for循环遍历
		for(Map.Entry<String, Integer> entry:map.entrySet()){
			System.out.println(entry.getKey()+entry.getValue());
		}

PS:Map以键值对的方式进行存储,且不是Iterator接口的实例化类,所以无法进行迭代器进行遍历;


阅读更多

没有更多推荐了,返回首页