kangabo 2021-06-24 19:08 采纳率: 85.1%
浏览 31
已采纳

LC49字母异位词分组

能解析一下这里面的foreach循环吗,看晕了,而且我foreach基础不好,平时都用for循环 

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        Map<String, List<String>> map = new HashMap<String, List<String>>();
        for (String str : strs) {
            char[] array = str.toCharArray();
            Arrays.sort(array);
            String key = new String(array);
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            list.add(str);
            map.put(key, list);
        }
        return new ArrayList<List<String>>(map.values());
    }
}
  • 写回答

2条回答 默认 最新

  • 404警告 2021-06-24 19:42
    关注

     

    class Solution {
    // 方法 groupAnagrams:需要传入一个string数组 作为参数,且返回值为list集合 list套list string;
        public List<List<String>> groupAnagrams(String[] strs) {
    // 创建一个map集合 key是string类型 ,value是list<string>
            Map<String, List<String>> map = new HashMap<String, List<String>>();
    // 使用增强for循环foreach 循环传入的参数 string数组strs
            for (String str : strs) {
    // 得到每个字符串str ,通过字符串的方法toCharArray() 返回一个char数组array
                char[] array = str.toCharArray();
    // 使用Arrays类(用来操作数组的工具类) 中的sort方法进行排序(默认从小到大 char本质对应Ascll码表有对应十进制等)
                Arrays.sort(array);
    // 通过stirng类的构造方法生成新的字符串 
                String key = new String(array);
    // Map.getOrDefault(Object key, V defaultValue)方法的作用是:当Map集合中有这个key时,就使用这个key值;如果没有就使用默认值defaultValue。 (把新生成的字符串作为map的key 得到list集合(如果key存在就根据key取出之前的key对应的list集合))
                List<String> list = map.getOrDefault(key, new ArrayList<String>());
    // 把当前字符串添加到获取出来的list集合中
                list.add(str);
    // 添加到map
                map.put(key, list);
            }
    // 返回map中所有的value得到新的list集合
            return new ArrayList<List<String>>(map.values());
        }
    }

    foreach与for循环不同点就在于:

    for和foreach使用的对象大多是数组,如果对象是可以随机访问的用for,效率更高,如果访问对象是顺序的用foreach,同时注意foreach用作访问,不进行数组或者列表的操作

    普通for循环在遍历集合时使用下标来定位集合中的元素,java在jdk1.5中开始支持foreach循环,foreach在一定程度上简化了对集合的遍历,但是foreach不能完全代替for循环

    for循环可以有索引 根据得到当前下标, foreach是没有索引的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 vmware exsi重置后的密码
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面