Java集合复习
集合:工具类,像容器存储任意数量的具有相同属性的对象
作用:在类的内部,对数据进行组织
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。集合使用来承载其他对象的容器
与数组相比,选集合的理由:
数组的长度固定,需要复制,集合长度可变;
数组只能通过数组下标访问元素,类型固定,而有的集合可以通过任意类型查找锁映射的具体对象,数组还要遍历元素比较麻烦
类:
List(序列):排列有序,可重复,List关注的是索引,拥有一系列和索引相关的方法,查询速度快,插入删除速度慢
Queue(队列):排序有序,可重复,
Set(集):无序,不可重复
Map:
Entry类(键值对)是Map的内部类,Key,Value就是Entry的实例,key和value可以是任意类型的对象
ArrayList数组序列,LinkedList链表,HashSet哈希集,HashMap哈希表
在每个Collection类中,存储的就是一个个独立的对象,而Map类的内部,一个key一个value两个对象为一个映射去存储数据,这样的一个映射就是Entry类的实例,这个Entry类是Map类的一个内部类,
ArrayList查询速度快,插入删除速度慢,当插入删除时,会伴随着后面数据的移动
基于数组,按照添加的先后顺序排列
LinkedList基于链表,是双向链表,包括头指针和尾指针,和数据域
遍历:
Iterator:迭代输出
ListIterator:Iterator的子接口,专门用于输出List中的内容
Foreach:用于遍历数组和集合
Iterator:
Iterator it=arrayList.Iterator();
While(it.hasNext()){Object o=it.next();…}
HashSet:
Void clear()从set移除所有元素
Boolean contains(Object o)判断set是否包含o这个元素
Int size() 返回此set中的元素的数量(set的容量)
Map(线程不安全,允许null作为key和value,key不可以重复,value可以重复):
V put(K key,V value)
Int size() 返回此map中的元素的而数量
遍历:
KeySet()
将map中所有的键存入到set集合中,因为set具有迭代器,所以可以用迭代方式取出所有的键,在根据get方法获取每一个键对应的值,keySet();迭代器后只能通过get()取key
取到的结果会是乱序,因为取得数据行主键的时候,使用了HashMap.keySet()方法,而这个方法返回的Set结果,里面的数据是乱序排放的
Values():获取所有的值
不能获取key对象
entrySet()
Set<Map.Entry<K,V>> entrySet(); 返回此映射中包含的映射关系的Set视图,就是把(key-value)作为一个整体一对一地存放发到Set结合中。Map.Entry表示映射关系,entrySet(); 迭代后可以e.getKey(), e.getValue()两种方法来取key和value,返回的是Entry接口:
Set<Map.Entry<Integer,String>> es=map.entrySet();
Iterator<Map.Entry<Integer,String>> it=es.iterator();
While(it.hasNext()){
Map.Entry<Integer,String> en=it.next();
Integer key=en.getKey();
String value=en.getValue();
}
推荐使用第三种,效率高
对于keySet其实是遍历了两次,一次是转为iterator,一次是从HashMap中取出key和value。而entryset只是遍历了第一次,他把key和value都放到了entry中,
