Java Map集合笔记 && 49. 字母异位词分组

49. 字母异位词分组

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

Java Map集合笔记   &&  49. 字母异位词分组

 

 

 --解题思路--

由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。

 --解题代码--

 

public List<List<String>> groupAnagrams(String[] strs) {
        //在内容相同情况下,String会hash得到相同的key,
        // 由于char[]特殊机制,相同内容的在hash后值不会相同。
        // 因此Map中必须使用String作为key
        Map<String,List<String>> map = new HashMap<>();
        for(String str:strs){
            char[] ch = str.toCharArray();
            Arrays.sort(ch);
            String key = new String(ch);

            //当Map集合中有这个key时,就使用这个key值,如果没有就使用默认值defaultValue
            //        String address = map.getOrDefault("address", "北京");
            //        System.out.println(address);// 北京,map中不存在address,使用默认值“北京”
            List<String> list = map.getOrDefault(key,new ArrayList<String>());
            list.add(str);
            map.put(key,list);

        }
        return new ArrayList<>(map.values());

    }

 

 

 

--写在后面的话--

 

Java Map集合笔记

 

1.概念
Map 是一种键-值对(key-value)集合,Map集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。
Map 接口主要有两个实现类:HashMap 类和TreeMap类。其中,HashMap类按哈希算法来存取键对象,而TreeMap类可以对键对象进行排序。

 

2.常用方法

Java Map集合笔记   &&  49. 字母异位词分组

            //当Map集合中有这个key时,就使用这个key值,如果没有就使用默认值defaultValue
                    String address = map.getOrDefault("address", "北京");
                    System.out.println(address);// 北京,map中不存在address,使用默认值“北京”

  


 

 

上一篇:物联网架构成长之路(49)-SpringBoot集成KafKa中间件


下一篇:CF997解题报告