2016-11-16 129 views
0

我有以下问题: 我有两个不同数据类型的数组,例如:在Java中对两个不同数据类型的数组进行排序

byte[] a = {2,5,3}; 
long[] b = {2,0,1}; 

而且我希望b得到排序,并且必须分别更改a中的条目s.t.我得到

byte[] a = {5,3,2}; 
long[] b = {0,1,2}; 

我已经看到,大多数人用比较器做这件事,但似乎不适用于不同的数据类型。我正在寻找一种有效的解决方案,因为阵列长度将非常大。然而,a只有两个不同的条目0和1(但我仍然希望将它保留为字节,以便有更多条目的选项),并且所有对(0,x)已经排序(这意味着如果我只挑选对第一个条目是0,那么它已经排序)。对(1,x')也是一样,但是b中的条目没有完全排序。我希望我的问题清楚。我很乐意提供任何建议。

非常感谢您提前!

编辑:显然这个问题:Sort a parallel array using Arrays.sort()是非常相似。但是我无法重现任何工作示例。有没有人有一个完整的工作示例?

+2

与其拥有这些“并行”集合,几乎可以肯定的是,创建一个带有“byte”和“long”,然后是该类型的* single *集合/数组的新类将更加清洁。然后,您可以使用该类型的比较器对该集合/数组进行排序。 –

+0

我现在通过去一个数据类型并使用类似下面的东西来解决它:http://stackoverflow.com/questions/18232788/procedure-to-sort-a-two-dimensional-int-array-depending-on -column然而,我对这个解决方案并不满意,但现在没关系...... – PhysX

回答

0

如果您将问题标记为,我会尝试解决您的问题,但在中,您的问题描述显示您缺少一个班级。

public class MyClass implements Comparable { 

    private byte; 
    private long; 
    //getters setters 
    //compare method according to your requirements. 
} 

然后你将有MyClass[],你将能够排序。

如果你想坚持你的问题,只需实现一个排序算法,对你的一个数组进行排序,当你只执行交换时,也可以在第二个数组中交换元素。

相关问题