Collection接口是Collection层次框架的根接口,其实现类有ArrayList,LinkedList,HashSet,TreeSet.
下面是collection共有的增,删,判断及遍历方法
public static void colletionMethod(){
Collection<String> c = new ArrayList();
c.add("java01");//增加
c.add("java02");
c.add("java03");
c.add("java04");
System.out.println(c.contains("java01"));// 判断是否包含
System.out.println(c.remove("java02"));//删除
for(Iterator<String> it = c.iterator();it.hasNext();){//遍历
System.out.println(it.next());
}
c.clear();//移除集合中的所有元素
}
List接口:元素是有序的,元素可以重复,因为该集合有索引,List中contains()方法调用的是对象的equals()方法
子类有ArrayList,TreeList
实现List接口的类可对索引进行操作
List list = new ArrayList();
list.add("java01");
list.add("java02");
list.add("java03");
list.add(1, "java001");//在指定位置插入元素
list.set(2, "java002");//将指定位置元素改为java002
list.get(0);//获取指定位置元素
list.remove(0);//获取并移除指定位置元素
ArrayList:数组结构 查询快 增删慢
LinkedList:链表数据结构 查询慢 增删快
下面是LinkedList的一些常用方法,同时有自己独有的迭代方式
public class Test4 {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
list.addFirst("java01");//将元素插入到列表的开头
list.addFirst("java02");
list.addLast("java03");
list.addLast("java04");//将元素插入到列表的末尾
System.out.println(list);
System.out.println(list.peekFirst());//获取但不移除第一个元素
System.out.println(list);
System.out.println(list.pollFirst());//获取并移除第一个元素
System.out.println(list);
}
}
for(ListIterator<String> it = list.listIterator();it.hasNext();){
String curr = it.next();
if("java01".equals(curr)){
it.add("java002");//增加元素
}
if("java03".equals(curr)){
it.set("java003");//修改元素
}
System.out.println(curr);
}
System.out.println(list);
}
Set接口:无序,元素不可重复 子类有HashSet,TreeSet
HashSet:数据结构是哈希表 判断重复是先比较hashcode再调用equals方法
注意:当对象存储到hash集合中,对象中参与hashcode运算的字段就不能再更改了,否则无法在集合中删除该对象,造成内存泄漏。
TreeSet:可排序,底层数据结构二叉树 保证元素唯一性的依据是对象的compareTo()方法,其排序的实现
- TreeSet()
构造一个新的空 set,该 set 根据其元素的自然顺序进行排序,存入对象必须实现Comparable接口 - TreeSet(Comparator<? superE> comparator)
构造一个新的空 TreeSet,它根据指定比较器进行排序。
Map接口:键值对, 不能包含重复的键 子类有HashMap,TreeMap
Map的迭代方式有两种:
- 得到键构成的Set结构,对Set进行迭代
Map<String,String> map = new HashMap<String,String>(); map.put("01", "张三"); map.put("02", "李四"); map.put("03", "王五"); Set<String> keySet = map.keySet(); for(Iterator<String> it = keySet.iterator();it.hasNext();){ String key = it.next(); System.out.println("key:"+key+"value:"+map.get(key)); }
- 得到封装映射关系的Set结构,再对其迭代
Set<Map.Entry<String, String>> entrySet = map.entrySet(); for(Iterator it = entrySet.iterator();it.hasNext();){ Map.Entry<String, String> entry = (Entry<String, String>) it.next(); System.out.println(entry.getKey()+"value:"+entry.getValue()); }
HashMap:哈希数据结构,可以存null键null值
注意:当对象存储到hash集合中,对象中参与hashcode运算的字段就不能再更改了,否则无法在集合中删除该对象,造成内存泄漏。
TreeMap:二叉树数据结构 可以用于给Map集合中的键进行排序 它的排序方式和TreeSet类似。
Collections 是集合框架类的工具类。提供了将集合类变成同步的方法,顺序反转,比较器反转等功能。