集合 (Collection,List(泛型类),Set,Map) 超全整理

概念:对象的容器,可以存储多个对象

特点:一个工具类,提供了操作多个对象的方法

位置:java.util包下

Collection体系
在这里插入图片描述
Collection根接口
特点:存储多个对象,无序无下标
方法
boolean add(Object o) 向集合中添加一个对象
boolean remove(Object o) 从集合中一处一个对象
boolean contains(Object o) 判断集合中是否包含某一个元素
int size() 返回集合中有效元素个数

List接口
特点:存储多个对象,有序有下标元素可以重复。
方法
add(int index,Object o) 在指定位置插入一个元素
remove(int index) 根据下标删除元素
set(int index,Object o) 修改指定下标处的元素
get(int index) 根据下标返回对应的元素
List subList(int start,int end) 返回start(包含) -end(不包含)之间的元素组成的List集合

实现类:
ArrayList 数组实现 查询快,增删慢
JDK 1.2 轻量级,线程不安全,效率高
LinkedList 链表实现 查询慢,增删快
Vectot 数组实现
JDK1.0 重量级 线程安全 效率慢

遍历方式
1.下标遍历

for(int i=0; i<list.size();i++){
	System.out.print(list.get(i)+"\t")
}
System.out.println();

2.for-each遍历

for(Object o:list){
	System.out.println(o);
}

注意:如果定义了泛型,则数据类型与泛型类型一致
3.迭代器遍历
a) while循环遍历

Collection coll = new ArrayList();
coll.add("a1")
coll.add("a1")
coll.add("a1")
Iterator it = coll.iteratou();
while(it.hasNext()){
	System.out.println(it.next());
}

b) for循环遍历

Collection coll = new ArrayList();
coll.add("a1")
coll.add("a1")
coll.add("a1")
for(Iteratot it = coll.iteratou() ; it.hasNext();){
	System.out.println(it.next());
}

泛型集合:类型安全的集合,强制集合中的元素类型一致

List<数据类型> list = new ArrayList<数据类型>();

泛型类

class A<T>{
	private T t;
	public T getT() {
		return t;
	}
	public void setT(T t) {
		this.t = t;
	}
}

注意

  1. A a = new A();
  2. A a = new A(String);
  3. 能够在编译时进行检验
  4. A a = new A<>();
  5. 通常 T/K/V/E 表示泛型

jdk 1.5 开始 可以定义泛型接口

interface IA<T,K>{
	public void ma(T t,K k);
}

Colleations工具类
概念:集合的工具类,定义了操作集合的方法
常用方法
reverse(List list) : 将集合的元素进行翻转
shuffle(List list) : 将集合中元素随机重置
sort(List list) : 对元素进行自然升序排序
注意:如果集合中的元素为自定义类型,则需要这个自定义的类实现Comparable接口,并且重写compareTo方法

Set接口
特点:存储任意对象类型,无序无下标 元素内容不可重复
方法:Collection接口
Obkect[] toArray(); 将集合转换成数组

实现类
1.Hashset
HashSet如歌保证元素内容不重复
需要重写hashCode和equals方法

hashCode重写原则:将所有的属性计算一个整数进行返回

public int hashCode(){
	return name.hashCode()+age+(int)score;
}

2.SortedSet(子接口)
TreeSet:使Set集合中的元素进行升序排序
注意:自定义类型必须实现Comparable接口,以及实现compareTo方法。基于compareTo方法的返回值决定元素内容是否重复(返回值为0时,判断为重复)
3.LinkedHashSet :HashSet的子类,将元素按照存入的顺序排列遍历方式
4.for-each
5.迭代器遍历

Map集合接口
特点
存储任意对象类型的键值对(key - value)
键:无序无下标元素不可重复
值:无序无下标元素可以重复

方法
boolean containsKey(Object key) : 判断是否包含此key
boolean containsValue(Object value) : 判断是否包含此值
put(K key, V value) : 向Map集合中添加键值对(增),若key已经存在,则更改value(改)。
remove(Object key) : 根据key删除此键值对
V get(Object key) : 根据key获取value
int size() : 返回有效键值对个数

实现类
HashMap

HashMap如何保证键不重复:重写hashCode 和 equals方法

HashMap: JDK 1.2 线程不安全,效率高;允许用null作为key和value
Hashtable: JDK 1.0 线程安全,效率低;不允许用null作为key和value

Properties : Hashtable的子类。key和value只能是String类型。通常用于配置文件的读取
SortedMap:子接口
TreeMap: 对key进行自然升序排序
注意:若Key是自定义类型,则要求实现Comparable接口和重写compareTo方法

遍历方式
1.键遍历

Set<String> keys = map.keySet();
for (String key : keys) {
    String value = map.get(key);
    System.out.println(key+"--"+value);
}

2.值遍历

Collection<String> values = map.values();
for (String value : values) {
    System.out.println(value);
}

3.键值对遍历

Set<Entry<String,String>> set = map.entrySet();

for(Entry<String,String> entry:set) {
    String key = entry.getKey();		//获取key
    String value = entry.getValue();	//获取value
    System.out.println(key+"-"+value);
}
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值