Collection和Map接口之间的主要区别在于:Collection中存储了一组对象,而Map存储关键字/值对
1,collection :所有集合框架的父接口-----有两个子接口:list 和set两个接口
1.1 List :有序集合的父接口 ,两个常用实现类:ArrayList 和LinkedList
1.1.1 ArrayList :内部使用数组实现,此中存储的元素都有固定索引,索引从0开始,快速检索时效率高,由于数组长度定义之后不可改变在进行更新的时候是开销较大的
Tip: 集合遍历时如何删除集合中的元素,对ArrayList进行遍历时不要用自带的remove()方法
在迭代器(iterator)中调用List.remove()方法会报错ConcurrentModificationException
iterator只能迭代一次,如果还要迭代,需要再次获取iterator
Iterator it = list.iterator();list为List的引用:
while(it.hasNext()){//hasNext()判断iteration是否有元素,有的话返回true
Object obj = it.next();//next()返回迭代器中的下一个元素
if(条件){
it.remove();//remove()从集合中删除数据
}
}
ListIterator 可以反向迭代数据 list.listIterator()获取ListIterator 对象
构造方法之一: ArrayList(Collection<? extendsE> c) :将一个Collection对象,作为参数传给另个构造方法
函数:泛型--在程序编译过程中对于集合的类型进行检查,保证类型安全(jdk1.7特性)
void
clear() 清楚集合中的所有元素
boolean
contains(Object o) 如果集合中包含0,则返回true
E
get(int index) 返回集合中指定位置的元素
boolean
add(E e) 在集合最后添加指定元素
E set(int index,E element)将集合中指定位置的数据更换掉
void add(int index,E element)将集合中指定的位置添加数据
1.1.2 LinkedList:内部基于链表的实现,检索时只能通过指针依次检索,检索时效率低,但是添加和修改效率高,只需修改元素首位指针
boolean
add(E e) 在集合中添加指定元素
E
get(int index) 获取集合中指定位置的元素
LinkedList<String> ll = new LinkedList<>();
ll.add("A");
ll.add("B");
ll.add("C");
ll.add("D");
ll.add("E");
ll.addFirst("FIRST");
ll.addLast("LAST");
System.out.println(ll);//[FIRST, A, B, C, D, E, LAST]
System.out.println(ll.getFirst());//FIRST
1.2 set :无序集合的父接口(第二次出现的会覆盖第一个),两个常用实现类:HashSet 和TreeSet
1.2.1 HashSet :使用哈希算法对添加的元素进行排序,跟输入的元素顺序无关,并且重复的元素不允许出 现,实际上是HasHMap实例,不保证里面元素的顺序永久不变,也可包含null元素
HashSet<String> set = new HashSet<>();
set.add("AS");
set.add("BS");
set.add("CS");
set.add("DS");
for(String s : set){
System.out.println(s);
}
System.out.println("-----------");
Iterator<String> it = set.iterator();
while(it.hasNext()){
String ss = it.next();
System.out.println("ss="+ss);
}
输出的结果:
CS
BS
AS
DS
-----------
ss=CS
ss=BS
ss=AS
ss=DS
1.2.2 TreeSet :能对元素进行排序(默认自然排序),但要求元素类型一致
2,集合的工具类Collections:包含全是静态方法
static void
reverse(List<?> list) 将集合元素反转显示
对集合中的元素使用自然顺序(元素实现的Comparable接口中的compareTo)排序
static <T extends Comparable<? super T>> void
sort(List<T> list)//
static <T> void
sort(List<T> list, Comparator<? super T> c)//如果c为null则默认自然排序或者写一个类实现Comparator<bean> 重写compare(1,2)方法,如果返回1表示参数1比2 大,返回-1则参数1比2小,返回0则参数1=2。
Tip:Comparator <>一般独立创建一个类实现 Comparable<bean>一般用于需要比较的实体类上实现Comparable<bean>