集合框架

集合

一.数组、类和集合的对比记忆:
数组特点:*元素类型固定,长度固定 *。
类特点:不同类型的成员属性,共同描述一个实体类。
集合特点:元素类型不固定,长度也不固定,可以随意存放任何数据。

二:集合框架的继承结构:

collection、List、Set、Map都是接口;
ArraryList、LinkedList、HashSet、HashMap分别是实现上述接口的实现类。
1.Collection接口:
Collection接口是所有集合类的根节点,Collection表示一种规则,所 有实现了Collection接口的类遵循这种规则。

2.List接口:
List是Collection的子接口,它是一个元素有序(按照插入的顺序维护元素顺序)、可重复、可以为null的集合。

3.Set接口:
Set是Collection的子接口,它是一个元素无序不可重复、可以为null的集合。

4.Map接口:
Map是Collection的字接口,Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射,Map中的key不要求有序,不允许重复。value同样不要求有序,但可以重复。

三:集合实现类:
1.ArrayList集合
ArrayList是一个采用类型参数的泛型类,称之为泛型数组列表,相对于普通数组而言最大的特点就是改变了普通数组长度固定的缺点。ArrayList会初始化一个具有初始容量的list,默认的初始容量为10,但ArrayList也提供有参构造来指定初始化容量。一般情况下在我们大致确定集合容量时,建议采用有参构造指定初始容量,避免添加元素时因容量问题引起的频繁的扩容操作带来效率低下的问题。

常用方法(List集合通用):
Boolean add(Object obj);
将元素添加到集合中。
Boolean add(int index ,Object obj);
将元素obj插入到集合的index索引位置。
Object get(int index ,Object obj );
返回集合中索引为index的元素。
int indexof(object obj);
返回元素在集合中出现的索引。
Object set(int index,Object obj);
将index索引位置的元素替换成obj元素。
Object remove (int index);
删除并返回index索引位置的元素。
Boolean isEmpty() ;
判断集合是否为空。
扩展方法:--------集合可以装集合
在这里插入图片描述
在这里插入图片描述
2.LinkedList集合
储存原理是一个链表,在元素的前后分别有一个前置节点和后置节点,用于连接集合中的上一个元素和下一个元素,依次“手拉手”,构成一条链式数据的集合。

特有的方法:
void addFirst(object o);
将给定元素插入到当前集合头部。
void addLast(object o);
将给定元素插入到当前集合尾部。
Object getFirst();
获得当前集合的第一个元素。
Object getLast();
获得当前集合的最后一个元素。
Object removeFirst();
移除并返回当前集合的第一个元素;
Object removeLast();
移除并返回当前集合的最后一个元素;

两个List集合的对比:
1.ArrayList实现了长度可变的object类型数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高。插入、删除等操作频繁时性能低下。
2.LinkedList采用链表存储方式,插入、删除元素是效率较高,查找效率低。

效率不同的原因:
1.LinkList在执行删除和添加操作时,只会对相邻的元素有影响。
2.ArraryList由于它本质上是一个数组,在执行删除和添加操作时,后面所有的元素的地址值都将出现移位。

3.Set集合
1.Set接口特点:
存储一组唯一(不允许出现重复的元素)、无序(没有index下标)的对象,HashSet是Set接口常用的实现类。
2.Set操作和List一致。
3.遍历Set:
for循环:for(int i=0;i<set.size();i++){system.out.println(set.get(i));}
增强for:for(object:set){system.out.println(o);}
迭代器–搭配While循环:Iterator it =set.iterator();
While(it.hasNext()){system.out.println(it.next());}

4.Map集合
1.Map接口专门处理键值映射到数据,可以根据键实现对值的操作。
2.创建Map接口的常用实现类HashMap对象,存入数据。
3.基本操作:
增加数据:map.put(key,value); 特点:key不允许重复,一个key只对应一个唯一的value。
删除数据:map.remove(key);
替换数据map.replace(key,newvalue);
map.repalce(key,oldvalue,newvalue);
查询数据:mapget(key);返回value值。
查询所有-------遍历:
1.遍历所有的key
Set keys =map.KeySet();
for(object key:keys){
sout(key+"–"+map.get(key));
}
2.遍历所有的value
Collection values = map.values();
for(Object values:values){
sout(value);
}
3.遍历所有的键值对 entry(key,value)
Set entries = map.entrySet();
for(object entry:entries){
system.out.println(entry);
//向下转型 Object -->Map.Entry
map.Entry en =(map.Entry)entry;
sout(en.getkey()+"—"+en.getValues());
}
常用方法总结:
Object put(key,value); 将相互关联的一个关键字(key)与一个值(value)放入集合。
Object remove(Object value); 从当前集合中移除与指定键相关的映射,并返回该键关联的旧值。如果key没有任何的关联,则返回null。
Object get (Object key);获得与关键字key相关的值,如果该键不关联任何非null值,则返回null。
boolean containkey(key);判断集合中是否存在关键字key。
boolean containValue(value); 判断集合中是否存在值value。
boolean isEmpty(); 判断集合中是否存在元素。
void clear(); 清除集合中所有的元素。
int size(); 返回集合中元素的数量。
Set keySet(); 返回所有键key的集合。
Collection values;获得所有值value的集合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值