集合

来源:互联网 发布:nero刻录软件免费版 编辑:程序博客网 时间:2024/05/16 17:42
本章目标
1).掌握Collections类
2).掌握Comparable接口
3).掌握Map接口及主要实现类HashMap的使用
1、Collections类-工具类
sort(): 根据元素的自然顺序 对指定列表按升序进行排序。
reverse() : 反转指定列表中元素的顺序。,先用sort()升序,再用reverse()表示为降序排列
max():根据元素的自然顺序,返回给定 collection 的最大元素。    
min():根据元素的自然顺序 返回给定 collection 的最小元素。
面试题:Collections和Collection的区别?
  (1) Collections 是一个包装类,它包含有各种有关集合操作的静态多态方法, 此类不能实例化。
  (2) Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,Collection接口在java类库中有很多具体的实现。
                 它的意义是为各种具体的集合提供最大化的统一操作方式。
2、Comparable接口-对象排序比较器
         List排序时:
1、Collections.sort(list);升序
2、 Collections.reverse(list);降序
3、类还要实现Comparable接口,重写compareTo方法
        Set排序时:
1、用TreeSet类
2、类还要实现Comparable接口,重写compareTo方法
3、Map接口,具有键--值对。
1).HashMap类
   是Map接口的实现,可为基本操作(get 和 put)提供稳定的性能
2).Map集合的使用
(1).创建Map集合对象
      Map<键的类型,集合中元素的类型(通常是类类型)> map = new HashMap<键的类型,集合中元素的类型>();
(2).往集合中添加/修改数据(使用put方法)
       map.put(键的值,元素的值);
(3).获取集合大小(使用size方法)
     map.size();
(4).删除数据(使用remove方法)
     map.remove(删除元素的键值);
(5).获取数据(使用get方法
     首先创建一个对象来接受获取的值:
    类类型  对象名 = map.get(所要获取元素的键值);
(6).遍历集合所有数据
    1)、使用Iterator遍历:
     Iterator<Integer> it = map.keySet().iterator();   
while(it.hasNext())
{
Integer i = it.next();
System.out.println(i+","+map.get(i));
}
    2)、 使用keySet()遍历:
             首先要将map集合转为Set或List集合  即
              Set<Integer> sets = map.keySet();
for(Integer i:sets)
{
System.out.println(i+","+map.get(i));
}
    
    3)、使用entrySet遍历(难,不需要掌握)
      //entrySet遍历
Set<Entry<Integer, Student>> st = map.entrySet();
for(Map.Entry<Integer, Student> en:st)
{
System.out.println(en.getKey()+","+en.getValue());
}
HashMap和HashTable的异同
相同:(1)都是由数组实现
      (2)key都是通过hash算法
      (3)HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口
不同点:
 (1)HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
 (2)Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
 (3)最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
 (4)HashMap线程不安全,效率高,HashTable线程安全,效率低 
原创粉丝点击