• 课上实践练习——MySort


    模拟实现Linux下Sort -t : -k 2的功能。参考 Sort的实现。提交码云链接和代码运行截图。

    Linux下Sort -t : -k 2的功能

    • sort的工作原理:

    sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

    • sort的-t选项和-k选项

    如果有一个文件的内容是这样:

    [rocrocket@rocrocket programming]$ cat facebook.txt
    banana:30:5.5
    apple:10:2.5
    pear:90:2.3
    orange:20:3.4
    

    这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。

    ,sort提供了-t选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)
    指定了间隔符之后,就可以用-k来指定列数了。

    [rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt
    apple:10:2.5
    orange:20:3.4
    banana:30:5.5
    pear:90:2.3
    

    我们使用冒号作为间隔符,并针对第二列来进行数值升序排序.

    题目:

      1 import java.util.*;
      2
      3 public class MySort1 {
      4     public static void main(String [] args) {
      5         String [] toSort = {"aaa:10:1:1",
      6                             "ccc:30:3:4",
      7                             "bbb:50:4:5",
      8                             "ddd:20:5:3",
      9                             "eee:40:2:20"};
     10
     11         System.out.println("Before sort:");
     12         for (String str: toSort)
     13                     System.out.println(str);
     14
     15         Arrays.sort(toSort);
     16
     17         System.out.println("After sort:");
     18         for( String str : toSort)
     19             System.out.println(str);
     20     }
     21 }
    

    代码补充如下

    import java.util.*;
    
    public class MySort {
        public static void main(String [] args) {
            String [] toSort = {"aaa:10:1:1",
                    "ccc:30:3:4",
                    "bbb:50:4:5",
                    "ddd:20:5:3",
                    "eee:40:2:20"};
    
            System.out.println("Before sort:");
            for (String str: toSort)
                System.out.println(str);
    
            int [] k2 = new int[toSort.length];
            for(int i =0;i<toSort.length;i++){
                String[] div = toSort[i].split(":");//split(regex),参数为要分隔的字符串或者正则表达式
    
                k2[i]=Integer.parseInt(div[1]);
            }
            Arrays.sort(k2);
            String[] save = new String[k2.length];
            for(int i=0;i<toSort.length;i++)
                for (int k = 0; k < k2.length; k++) {
                    if (toSort[i].substring(4,6).equals(String.valueOf(k2[k]))) {
                        save[k]=toSort[i];
                    }
    
                }
            System.out.println();
            System.out.println("After sort:");
            for(int i =0;i<save.length;i++){
                System.out.println(save[i]);
            }
        }
    }
    
    • 运行截图

    代码托管

  • 相关阅读:
    配置sonar、jenkins进行持续审查
    maven命令解释
    Maven中-DskipTests和-Dmaven.test.skip=true的区别
    maven之一:maven安装和eclipse集成
    Eclipse安装Maven插件
    IntelliJ IDEA单元测试和代码覆盖率图解
    关于Spring中的<context:annotation-config/>配置
    Java开发之@PostConstruct和@PreConstruct注解
    Java定时任务的三种实现方法
    JAVA之Mybatis基础入门二 -- 新增、更新、删除
  • 原文地址:https://www.cnblogs.com/hpl20155329/p/6924556.html
Copyright © 2020-2023  润新知