2

我有两个数组

String a[]={"11","02","43","24","05","86","37","28","29","10"};
String b[]={"a","c","f","q","w","x","z","x","s","r"};

我想按升序对数组 a[] 进行排序

结果可能会喜欢

String a[]={"02","05","10","11","24","28","29","37","43","86"};
String b[]={"c","w","r","a","q","x","s","z","f","x"};

我如何使用java获得上述结果?java中的任何排序方法?

4

4 回答 4

6

最简单的方法是以某种方式将 2 条数据链接在一起,而不是将它们放在单独的数组中。许多人建议了一个很好用的地图。根据您要执行的操作,我还将考虑一个具有 2 个实现 Comparable 的变量的新类。如果没有为 Collections.sort 提供不同的 Comparator 以供使用,则 Comparable 定义类在 Collection(在本例中为数组)中时的自然顺序。它看起来像这样:

    public class Data implements Comparable{ 
    private String stringOne;
    private String stringTwo;

    @Override
    public int compareTo(Object obj) {
        stringOne.compareTo((String)obj);
    }

别的地方叫:

    Collections.sort(locationOfDataCollection);

然后,您可以创建一个数据集合并使用 getter 方法访问另一个字符串。如果在某些情况下需要用新的比较器覆盖自然顺序(例如,按 stringTwo 排序),此实现还将使其在未来变得简单(请参阅策略设计)。

于 2012-11-29T15:39:55.323 回答
4

由于您有 2组相关的数据,我要么通过Pair<String,String>类型对象将它们链接到 aList<Pair>中,要么将它们放入 aMap<String,String>中。

也许第一个解决方案更直观,例如

public class Pair implements Comparable<Pair> {
   public String first;
   public String second;

   // equals/hashcode etc.
}

一旦它们位于标准 Java 集合中,就有许多解决方案可用于对它们进行排序。例如,在上面Pair我已经实现了集合排序机制将使用的Comparable<T>接口。

于 2012-11-29T14:50:34.890 回答
0

在 Java 中没有直接执行此操作的方法。你有两个选择。

1)定义 a Map<String, String>,将所有对放入其中(如(“11”,“a”))。对第一个数组(或地图的键)进行排序并按该顺序检索地图的元素。

2)创建一个包含每个 par 的对象,List用它创建 a ,并仅按数字进行比较(实现Comparable或创建 a Comparator)。

于 2012-11-29T14:50:19.977 回答
0

您需要注意的一个问题是字符串不会按照与整数相同的规则进行排序。如果您将排序的数组保留为字符串,您可能会对所得到的结果感到惊讶。

于 2012-11-29T15:16:19.320 回答