假设我有一个(未排序的)数组:
[ 12 64 35 ]
[ 95 89 95 ]
[ 32 54 09 ]
[ 87 56 12 ]
我想对它进行排序,使第二列按升序排列:
[ 32 54 09 ]
[ 87 56 12 ]
[ 12 64 35 ]
[ 95 89 95 ]
以下是我考虑过的处理方法:
将每个 [ x y z ] 值制成一个列表,并将每个 xyz 值与一个标识符相关联,该标识符的属性是 xyz 值的 y 值。然后,对标识符进行排序。 (我不确定对 Java 数组进行排序是否会保留该行中的相应值)
使用hashmap做和前面一样的事情
但是,上述两种方法显然有些浪费和复杂,因为它们依赖于不需要的外部标识符值,那么有没有更简单、更快速、更优雅的方法来做到这一点?
抱歉,如果这是一个愚蠢的问题,我对 Java 对数组进行排序的方式一点都不熟悉。
最佳答案
最简单、最简洁的方法是编写一个小型比较器类。这也将使您更灵活地控制排序行为;例如,您可以对第一个元素或数组的任何元素进行排序。
比较器将是这样的:
new Comparator(){
public int compare ( Integer[] obj1, Integer[] obj2)
{
return obj1[1].compareTo(obj2[1]);
}
关于java - 在 Java 中按 y 值对坐标进行排序的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14175309/