集合框架

(12) 【 集合框架】
集合(容器):一个对象,用来储存其他多个对象

Collection(父接口)---------------------------------------------

特点:元素是Object
实现类:无

方法:

add(Obiect o):确保此collection包含指定的元素(可选操作)
addAll(Collection c):把c中的所有对象放入集合
clear():清空集合
contains(Object o):判读对象o在集合中是否存在
isEmpty():判断集合是否为空
remove(Object o):把对象o从集合中删去
size():返回集合中对象的个数
toArray():把集合转成对象数组
遍历:

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

① List(子接口)

特点:元素有顺序(下标),可以重复

方法:

add(int pos,Object o):把对象o插入到pos位置
get(int pos):返回pos位置的元素
indexOf(Object o):返回对象o在数组中的下标(从前往后找)
lastIndexOf(Object o):返回对象o在数组中的下标(从后往前找
remove(int pos):删除pos位置的元素
set(int pos,Object o):把pos位置的元素替换为o

List遍历
1.for循环变量(下标遍历)
	 for(int i=0;i<list.size();i++){
     	System.out.println(list.get(i));
     }
	//2.for-each 遍历
 	 for(Object o : c){
 		System.out.println(o);
 	  }
     //3.迭代遍历【可以遍历任何Collection】
	  Iterator it = list.iterator();
	  while(it.hasNext()){
	  	Object o = it.next();
	  	System.out.println(o);
	  }
List接口实现类
1.ArrayList 用数组实现List 查询块,增删慢(JDK1.2)轻量级的 线程不安全
2.Vector 用数组实现List 查询快,增删慢(JDK1.0)重量级的 线程安全
3.LinkedList 用链表实现List 查询慢,增删块(JDK1.2)

② Set(子接口)

特点:元素无顺序,不可重复【内容不可重复】

方法:全部继承自Collection接口
Set遍历
for(Object o : set){
   System.out.println(o);
 }
Set接口实现类
A HashSet

JDK1.2 数组实现 线程不安全
添加元素
a.先获取元素的哈希码
b.通过哈希码计算出下标位置
c.如果该位置没有元素,直接添加,否则通过
d.equals()比较,相同则不添加,否则 则添加
为保证自定义类型元素内容不重复,必须重写 hashCode()~equals()
hashCode()重写要求:
①:内容相同的对象必须返回相同的哈希码
②:内容不同的对象尽可能的返回不同的哈希码
equals() 重写要求 : 保证相同对象返回 true

B LinkedHashSet

JDK1.2 数组+链表实现 线程不安全
为保证自定义类型元素内容不重复,必须重写 hashCode()~equals()
可以保证元素的获取顺序和添加顺序一致!!!

C TreeSet

JDK1.2 红黑树实现 线程不安全
可以对元素进行自动的升序(从小到大)排列
为保证自定义类型元素内容不重复,自定义类型必须实现Comparable接口,提供compareTo方法实现

③ Map(独立的接口)

特点:元素由键值对组成 其中键是唯一的 值是可以重复的

方法:

put(Object k,Object v):把k-v这个键值对放入Map如果k已经存在,那么新的v会替换旧的v
get(Object k):返回Map中k对应的v
remov(Object k):删除以k为键的键值对
size():返回键值对的数量
containsKey(Object k):判断k这个键是否存在
containsValue(Value v):判断v这个值是否存在

A 键遍历
	//获取map中所有key组成的set集合
 	Set<String> set = map.keySet();
 	//遍历Set集合,获取每一个key,并通过get()获取value
 	for(String key : set){
 		String value = map.get(key);
 		System.out.println(key+"-->"+value);
 	}
B 值遍历
 //获取map中所有value组成的collection集合
 	Collection<String> c = map.values();
 	//遍历集合,获取每一个value
 	for(String value : c){
 		System.out.println(value);
 	}
C 键值对遍历
	//获取Map中所有键值对(Map.Entry<K,V>)对象组成的Set集合
   	Set<Map.Entry<String,String>> set = map.entrySet();
   	//遍历Set集合,获取每一个键值对,调用键值对对象的方法获取key和value
   	for(Map.Entry<String,String> e : set){
   		String key = e.getKey();
   		String value = e.getValue();
   		System.out.println(key+"-->"+value);
   	}
D Map实现类
1.HashMap JDK1.2 数组实现 线程不安全

轻量级实现 效率高 允许null键值对
自定义类型做key,自定义类型必须重写hashCode()~equals()

2.LinekedHashMap JDK1.2 链表+数组实现 线程不安全

可以保证键值对的获取顺序和添加顺序一致 轻量级实现 效率高
自定义类型做key,自定义类型必须实现Comparable接口 提供compareTo方法实现

3.TreeMap JDK1.2 红黑树实现 线程不安全 轻量级实现

可以根据key的内容,对键值对进行升序排列 效率高
实现Comparable接口,提供compareTo方法实现

4.Hashtable JDK1.0 数组实现 线程安全 重量级实现

效率低 不允许null键值对
自定义类型做key,重写hashCode()~equals()

5.Properties JDK1.0 数组实现 线程安全 重量级实现

效率低 Hashtable的子类
键和值的类型都是字符串类型,用于读取配置文件信息
上一篇:常用类
[1]:https://blog.csdn.net/qq_42806727/article/details/88947030

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值