栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【LeetCode】 五月打卡-day03

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【LeetCode】 五月打卡-day03

937. 重新排列日志文件

自定义排序的比较方式。
比较时,先将字符串数组日志按照第一个空格分成两部分字符串,其中第一部分为标识符。第二部分的首字符可以用来判断该日志的类型。

class Solution {
    public String[] reorderLogFiles(String[] logs) {
        List l1 = new ArrayList<>();  // 存放字母日志
        List l2 = new ArrayList<>();  // 存放数字日志

        //遍历日志数组 logs
        for (String log : logs) {
            char c = log.charAt(log.length() - 1);
            boolean isNum = Character.isDigit(c);  // 判断每条log最后一个字符是否为数字
            if (!isNum) {
                l1.add(log);
            } else {
                l2.add(log);
            }
        }
        // 对字母日志自定义排序:
        Collections.sort(l1, (o1, o2) -> {
        
            String s1 = o1.substring(o1.indexOf(' '));
            String s2 = o2.substring(o2.indexOf(' '));
            // 如果标识符相同,内容不同时,忽略标识符后,按内容字母顺序排序
            if (s1.equals(s2)) {  
                return o1.compareTo(o2);
            } else {  // 否则,按标识符排序
                return s1.compareTo(s2);
            }
        });
        l1.addAll(l2);  // 把数字日志的所有元素添加到l1
        return l1.toArray(new String[0]);

    }
}

其中涉及的方法:

  • Character.isDigit( c ),其中c是字符,这个方法可以用于判断指定字符c是否为数字。如果字符为数字,则返回 true;否则返回 false。
  • 为了节省空间同时获取返回值为String[]的数组,我们使用String[] array=list.toArray(new String[0]);
  • IndexOf():查找字串中指定字符或字串首次出现的位置,返首索引值

详解java Collections.sort的两种用法

  • 通过实现Comparator接口的compare方法来完成自定义排序
	Collections.sort(list, new Comparator() {
      public int compare(String str1, String str2) {

      

      // 按首字母升序排
      // return str1.compareTo(str2);
      // 按第二个字母升序排
      char c1 = str1.charAt(1);
      char c2 = str2.charAt(1);
      return c1 - c2;
    }
  });
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号