标签:hashtable hashmap treemap map迭代 linkedhashmap
<span style="font-size:18px;"><span style="font-family:Arial;font-size:18px;"> /* * Map集合的遍历。 * 方法1:先拿到所有的key,然后遍历获取所有的value * 方法2:先拿到所有的键值对,然后遍历,获取每一个键和值(推荐) * */ public void test3(){ // 创建集合对象 Map<String, String> map = new HashMap<String, String>(); // 创建元素并添加到集合 map.put("杨过", "小龙女"); map.put("郭靖", "黄蓉"); map.put("杨康", "穆念慈"); map.put("陈玄风", "梅超风"); // 方法1:获取所有的键,然后根据键获取值(键找值) Set<String> set = map.keySet(); // 遍历键的集合,获取得到每一个键 for (String key : set) { // 根据键去找值 String value = map.get(key); System.out.println(key + "---" + value); } // 方法2: 直接拿到所有的键值 Set<Map.Entry<String, String>> entrySet = map.entrySet();//拿到键值的Set集合 for (Map.Entry<String, String> entry : entrySet) {//遍历集合,拿到每一对的键值 System.out.println(entry.getKey() + ":" + entry.getValue()); } // 方法2: 直接拿到所有的键值 for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } } </span></span>
<span style="font-size:18px;"> // hm.put(null, "world"); //NullPointerException // hm.put("java", null); // NullPointerException</span>
<span style="font-size:18px;"><span style="font-family:Arial;font-size:18px;"> /* * HashMap:是基于哈希表的Map接口实现。 * 哈希表的作用是用来保证键的唯一性的。 * * HashMap<String,String> * 键:String * 值:String */ public void test1(){ // 创建集合对象 HashMap<String, String> hm = new HashMap<String, String>(); // 创建元素并添加元素 // String key1 = "it001"; // String value1 = "马云"; // hm.put(key1, value1); hm.put("it001", "马云"); hm.put("it003", "马化腾"); hm.put("it004", "乔布斯"); hm.put("it005", "张朝阳"); hm.put("it002", "裘伯君"); // wps hm.put("it001", "比尔盖茨"); // 遍历 Set<String> set = hm.keySet(); for (String key : set) { String value = hm.get(key); System.out.println(key + "---" + value); } }</span></span>
<span style="font-size:18px;">/* * LinkedHashMap:是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。 * 由哈希表保证键的唯一性 * 由链表保证键盘的有序(存储和取出的顺序一致) */ public class LinkedHashMapDemo { public static void main(String[] args) { // 创建集合对象 LinkedHashMap<String, String> hm = new LinkedHashMap<String, String>(); // 创建并添加元素 hm.put("2345", "hello"); hm.put("1234", "world"); hm.put("3456", "java"); hm.put("1234", "javaee"); hm.put("3456", "android"); // 遍历 Set<String> set = hm.keySet(); for (String key : set) { String value = hm.get(key); System.out.println(key + "---" + value); } } } </span>
<span style="font-size:18px;"> /* * 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1) * * 分析: * A:定义一个字符串(可以改进为键盘录入) * B:定义一个TreeMap集合 * 键:Character * 值:Integer * C:把字符串转换为字符数组 * D:遍历字符数组,得到每一个字符 * E:拿刚才得到的字符作为键到集合中去找值,看返回值 * 是null:说明该键不存在,就把该字符作为键,1作为值存储 * 不是null:说明该键存在,就把值加1,然后重写存储该键和值 * F:定义字符串缓冲区变量 * G:遍历集合,得到键和值,进行按照要求拼接 * H:把字符串缓冲区转换为字符串输出 * */ public void test3() { String line = "aababcabcdabcde"; // 定义一个字符串(可以改进为键盘录入) // Scanner sc = new Scanner(System.in); // System.out.println("请输入一个字符串:"); // String line = sc.nextLine(); // 定义一个TreeMap集合 TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>(); //把字符串转换为字符数组 char[] chs = line.toCharArray(); //遍历字符数组,得到每一个字符 for(char ch : chs){ //拿刚才得到的字符作为键到集合中去找值,看返回值 Integer i = tm.get(ch); //是null:说明该键不存在,就把该字符作为键,1作为值存储 if(i == null){ tm.put(ch, 1); }else { //不是null:说明该键存在,就把值加1,然后重写存储该键和值 i++; tm.put(ch,i); } } //定义字符串缓冲区变量 StringBuilder sb= new StringBuilder(); //遍历集合,得到键和值,进行按照要求拼接 Set<Character> set = tm.keySet(); for(Character key : set){ Integer value = tm.get(key); sb.append(key).append("(").append(value).append(")"); } //把字符串缓冲区转换为字符串输出 String result = sb.toString(); System.out.println("result:"+result); }</span>
标签:hashtable hashmap treemap map迭代 linkedhashmap
原文地址:http://blog.csdn.net/u012228718/article/details/45697163