【问题标题】:How to sort Array in java? [duplicate]如何在java中对数组进行排序? [复制]
【发布时间】:2017-05-27 10:32:20
【问题描述】:

你好,我有一些像这样的简单代码

  String[] myString1= {"Hidayat", "20"};
  outerArr.add(myString1);

  String[] myString2= {"Ryan", "10"};
  outerArr.add(myString2);

  String[] myString2= {"irwan", "5"};
  outerArr.add(myString2);

有人知道如何按数字升序对数组outerArr进行排序吗?

【问题讨论】:

标签: java android arrays


【解决方案1】:

如果您使用 Java 8,另一种方法是使用 Lambda,首先创建一个类,其中包含字符串的 2 个成员字段和每个成员的带有 getter 的数字,然后以这种方式调用:

outerArr.sort((Person o1, Person o2)->o1.getAge()-o2.getAge());

如果您不想创建新课程,可以调用:

outerArr.sort((String[] o1, String[] o2)->Integer.parseInt(o1[1])-Integer.parseInt(o2[1]));

【讨论】:

    【解决方案2】:

    可以使用Comparator接口进行自定义排序:

    Collections.sort(outerArr, new Comparator<String[]>() {
        public int compare(String[] o1, String[] o2)
        {
            // for example you can compare integers
            return Integer.parseInt(o2[1]) - Integer.parseInt(o1[1]);
        }
    });
    

    【讨论】:

    • thx 之前,但如果一个数组是动态的循环如何
    • 您的数组在排序时发生了变化?
    • 这不是这篇文章的主题,但这取决于你的“动态数组”。
    【解决方案3】:

    对于这种情况,我更喜欢TreeMap。TreeMap 类通过使用树来实现 Map 接口。 TreeMap 提供了一种按排序顺序存储键/值对的有效方法,并允许快速检索。

    TreeMap<String, String> map = new TreeMap<>();
    map.put("20", "Hidayat");
    map.put("10", "Ryan");
    map.put("5", "irwan");
    

    用于检索值

    map.get("10"); // output = Ryan
    

    【讨论】:

    • 您应该补充一点,每次插入都会产生一些成本,当然会抑制,所以这取决于使用情况。对于一个非常静态的地图,这不是问题,对于一个会更新很多但只需要偶尔排序(打印或使用)一次的列表,我会留在列表中
    猜你喜欢
    • 2021-03-02
    • 2016-04-23
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2020-05-18
    相关资源
    最近更新 更多