java集合架构简单汇总

集合

集合的特点:(与数组的区别)
1.可存放不同数据类型的对象(必须是对象)
数组只能存放同一种类型数据,但是可以存放基本类型数据。

2.集合的长度可以自动增加,数组的长度一旦确定,就不能再改变。

3.集合对象中有许多方法可以直接调用进行元素的操作,数组对象中没有方法可以对数据进项操作。

4.java.util 包中的辅助工具类collections,也能对集合中的元素进行操作,而java.util 包中的辅助类Arrays,是用来对数组中的元素进行操作的。

在这里插入图片描述

1.Iterable接口(迭代器)
实现这个接口的集合,都有指定的一个方法

public Iterator iterator();

并且该接口中提供了一个方法可以返回一个迭代器对象,
迭代器(Iterable)对象在这里的作用就是循环遍历集合中的每一个元素。

2.Collection接口
Collection接口继承了Iterable接口。所以也都有获取迭代器的相关方法。
Collection类型集合体系结构中的根接口,JDK中不提供此接口的任何直接实现,而是提供更具体的子接口(List和Set)。
Collection接口中提供了很多集合中通用的方法
例如:
add() 添加
remove() 移除
clear() 清除
size() 大小

List接口:

特点:集合中的元素有序且可重复
:有序指的是元素放到集合中的顺序和循环遍历出来的顺序一致

List接口常见的实现类有:ArrayList、LinkedList、Vector等

集合遍历的方式
1.通用方式: 使用集合中提供的迭代器

	List c = new ArrayList();
		//调用add方法存数据
		Iterator iterator = c.iterator();
		while(iterator.hasNext()){
			Object obj = iterator.next();
			System.out.println(obj);
		}

2.List集合的特有方式:get方法通过下标访问元素

List list = new ArrayList();
	//调用add方法存数据
	for(int i=0;i<list.size();i++){
		System.out.println(list.get(i));
	}
	

3.foreach循环(增强for循环)
注:JDK5.0版本及以上可用

List list = new ArrayList();
	//调用add方法存数据	
	//自动遍历集合c中的元素,并且每次使用变量o来接收
	for(Object obj:list){
		System.out.println(obj);
	}

4.JDK1.8版本以上可使用

List list = new ArrayList();
list.forEach(obj->System.out.println(obj));
		

Set接口

Set类型集合特点:
集合中的元素不可重复,有没有序要看Set接口具体的实现类是谁。

Set接口常见的实现类有:
HashSet,LinkedHashSet
HashSet集合中元素的特点:无序不可重复
LinkedHashSet集合中元素的特点:有序不可重复

集合遍历的方式
1.通用方式: 使用集合中提供的迭代器

Set set= new HashSet();
	//调用add方法存数据
	Iterator iterator = set.iterator();
	while(iterator.hasNext()){
		Object obj = iterator.next();
		System.out.println(obj);
	}

2.foreach循环(增强for循环)

Set set= new HashSet;
	//调用add方法存数据		
	//自动遍历集合set中的元素,并且每次使用变量obj来接收
	for(Object obj:set){
		System.out.println(obj);
	}

3.JDK1.8版本以上可使用

Set set= new HashSet();
list.forEach(obj->System.out.println(obj));

4.SortedSet接口和TreeSet 类
SortedSet接口是Set接口的子接口,除了拥有Set集合的一些基本特点之外,还提供了排序的功能。
TreeSet类就是Sort额的Set接口的实现类

5.TreeSet类的排序功能
:TreeSet排序永远都是从小到大进行排序,但是谁大谁小是我们的方法控制。

自然排序

//java.lang.Comparable接口
//例如:
public class Student implements Comparable{
	private long id;
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public int compareTo(Object o) {
		Student s = (Student)o;
		if(this.id<s.id){
			return -1;
		}
		else if(this.id>s.id){
			return 1;
		}
		return 0;
	}
}

注意:
s1.compareTo(s2);
返回正数说明s1大
返回负数说明s1小
返回0说明s1和s2相等

比较器排序

Set set = new TreeSet(new Comparator() {
	@Override
	public int compare(Object o1, Object o2) {
		Comparable c1 = (Comparable) o1;
		Comparable c2 = (Comparable) o2;
		return c1.compareTo(c2);
	}
});

注意:
c1.compareTo(c2);
返回正数说明s1大
返回负数说明s1小
返回0说明s1和s2相等

6.Collection类型集合的工具类:Collections
一个是接口一个是类

Map接口

Map 类型的集合与Collection类型的集合不同,Map类型的集合存储数据的时候,要使用Key-Values的形式(键值对),且Key值不能重复,否则会覆盖原来的键值对。

1.Map接口中一些方法:
put 方法
get 方法
clear 方法
containsKey 方法
containsValue 方法
isEmpty 方法
size 方法
remove 方法

2.Map接口中常用的实现类
HashMap是线程不安全的,Hashtable是线程安全的。
HashMap允许key值或者value值为null,但是Hashtable中的key值或者value值都不允许为null,否则报错。

3.Map 类型集合遍历
使用keySet方法,可以返回该Map集合中的所有key值的set类型集合

Map map = new HashMap();
	//调用put方法存值

	for(Object key:map.keySet()){
		System.out.println(key+" : "+map.get(key));
	}

使用values方法,可以返回该Map集合中所有value值的Collection类型集合

Map map = new HashMap();
	//调用put方法存值

	for(Object value:map.values()){
		System.out.println(value);
	}

使用entrySet方法,可以返回该Map集合中,包含所有Entry类型对象的Set集合

Map map = new HashMap();
		//调用put方法存值
		Set entrySet = map.entrySet();
		for(Object obj:entrySet){
		Entry entry = (Entry)obj;
		System.out.println(entry.getKey());
		System.out.println(entry.getValue());
	}

4.SortedMap接口和TreeMap接口
SortedMap接口是Map接口的子接口,其进一步提供对键的排序功能。
TreeMap类就是SortedMap接口的实现类。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YJY@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值