Java

Java中Map集合概述及成员方法、Map集合的三个子类、Col

2016-10-28  本文已影响758人  清风沐沐

Map集合

前面我们一直在学Collection集合,那么它和Map集合有什么区别呢?

下面我们来了解Map集合的功能概述

public class MapDemo { 
         public static void main(String[] args) { 
                // 创建集合对象
                   Map<String, String> map = new HashMap<String, String>(); System.out.println("put:" + map.put("马蓉", "王宝强")); System.out.println("put:" + map.put("马蓉", "宋喆")); // 输出集合名称 System.out.println("map:" + map);
 }
}

运行结果:

put:null
put:王宝强
map:{马蓉=宋喆}

第一次为什么是null呢?而第二次返回的是王宝强呢?最后奇怪的是马蓉和宋喆真像现实中一样。我来给大家说说这是为什么?

现在明白了吧。
但是我们平时添加元素不是这样添加的,是下面这样

// 创建集合对象 
Map<String, String> map = new HashMap<String, String>(); 
// 添加元素 
map.put("邓超", "孙俪"); 
map.put("黄晓明", "杨颖"); 
map.put("周杰伦", "昆凌"); 
map.put("刘恺威", "杨幂"); 
// 输出集合名称 
System.out.println("map:" + map);

输出结果:map:{邓超=孙俪, 周杰伦=昆凌, 黄晓明=杨颖, 刘恺威=杨幂}我们继续

map.clear();//会移除所有的键值对元素
 System.out.println("map:" + map);//map:{} //所以不建议使用 
//V remove(Object key):根据键删除键值对元素,并把值返回 System.out.println("remove:" + map.remove("黄晓明")); System.out.println("remove:" + map.remove("黄晓波")); 
// 输出集合名称 
System.out.println("map:" + map);
//boolean containsKey(Object key):判断集合是否包含指定的键 System.out.println("containsKey:" + map.containsKey("黄晓明")); System.out.println("containsKey:" + map.containsKey("黄晓波")); 
// 输出集合名称
System.out.println("map:" + map);
 //boolean isEmpty():判断集合是否为空 System.out.println("isEmpty:"+map.isEmpty());
//这个也比较简单了 
System.out.println("size:"+map.size());//size:4

Map子类

LinkedHashMap

- 概述
   - Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。
   - 由哈希表保证键的唯一性,不可重复
   - 由链表保证键盘的有序(存储和取出的顺序一致)

TreeMap

Map集合的知识点和它的子类我上面都将到了,下面我们来做道练习题吧

public class HashtableDemo { 
public static void main(String[] args) { 
HashMap<String, String> hm = new HashMap<String, String>(); hm.put("android", "hello"); 
hm.put(null, "world"); 
hm.put("java", null); 
System.out.println(hm); 
Hashtable<String, String> ht = new Hashtable<String, String>(); ht.put("android", "hello"); 
ht.put(null, "world"); //NullPointerException 
ht.put("java", null);  // NullPointerException 
System.out.println(ht); 
}
}

在输出结果中:HashMap会打印出{null=world, java=null, Android=hello}而在Hashtable中会报错所以我们就能得出他们的区别

Collections类

我们之前学习了Collection,那么它和Collections有什么区别呢。
我们先来了解Collections类,然后在来说他们之间的区别

public class CollectionsDemo { 
     public static void main(String[] args) { 
           // 创建集合对象 
          List<Integer> list = new ArrayList<Integer>(); 
           // 添加元素 
          list.add(30); list.add(20); list.add(50); list.add(10); list.add(40);    
          System.out.println("list:" + list); 
          // public static <T> void sort(List<T> list):排序 默认情况下是自然顺序。 
          Collections.sort(list); 
          System.out.println("自然顺序list:" + list); 
          // public static <T> int binarySearch(List<?> list,T key):二分查找    
          System.out.println("二分查找:" + Collections.binarySearch(list, 30)); 
          System.out.println("二分查找:"+ Collections.binarySearch(list, 300)); 
          // public static <T> T max(Collection<?> coll):最大值    
          System.out.println("max:"+Collections.max(list));
          // public static void reverse(List<?> list):反转 
          Collections.reverse(list);
          System.out.println("list:" + list);
          //public static void shuffle(List<?> list):随机置换    
          Collections.shuffle(list);
          System.out.println("list:" + list); 

          // public static void reverse(List<?> list):反转   
          Collections.reverse(list);
          System.out.println("list:" + list);
     }
}

运行结果:

上面的排序功能,它在默认情况下是自然顺序,如果我们要存储一个自定义对象,那么他就不说自然排序了,就要用到我们上一篇讲到的比较器Comparator排序了,大家要注意一下

上一篇 下一篇

猜你喜欢

热点阅读