在java中按字母顺序排列2d数组

在java中按字母顺序排列2d数组,java,arrays,sorting,multidimensional-array,alphabetized,Java,Arrays,Sorting,Multidimensional Array,Alphabetized,我有一个2d数组,包含名字、姓氏和每行上的第三个不相关数据段。我需要根据姓氏按字母顺序排列每一行。我怎样才能做到这一点 我尝试过使用java.util.array.sort(数组[0]);但我只能对一行或一列进行排序。我需要把名字和姓氏放在一起,按姓氏排序 假设我有这个数组 String array [][]=new String[3][2]; array[0][0]="Kyle"; array[0][1]="Johnson"; array[1][0]=

我有一个2d数组,包含名字、姓氏和每行上的第三个不相关数据段。我需要根据姓氏按字母顺序排列每一行。我怎样才能做到这一点

我尝试过使用java.util.array.sort(数组[0]);但我只能对一行或一列进行排序。我需要把名字和姓氏放在一起,按姓氏排序

假设我有这个数组

String array [][]=new String[3][2];
       array[0][0]="Kyle";
       array[0][1]="Johnson";
       array[1][0]="Drew";
       array[1][1]="Anderson";
       array[2][0]="Jacob";
       array[2][1]="Peterson";
哪个是这样建造的

凯尔·约翰逊

德鲁·安德森

雅各布·彼得森

我需要它像这样结束

德鲁·安德森

凯尔·约翰逊


Jacob | Peterson

您可以使用String.compareTo(String)获得两个字符串的字典顺序,并制定自己的函数来实现这一点。 规则很简单(伪代码):

be[s1,d1]//即s1=Kyle,d1=Johnson
be[s2,d2]
if(s1s2)
[s2,d2]<[s1,d1]
其他的
如果(d1

请参阅&了解这些方法的返回值,这里有一个简单的方法,可以对二维数组进行排序。 将用于排序的索引作为第二个参数传入。 在您的情况下,它将是1,因为姓氏索引为1

为了简洁起见,我省略了空检查

public static String[][] sort(String[][] array, final int sortIndex) {


        if (array.length < 2) {
            return array;
        }


        Arrays.sort(array, new Comparator<String[]>() {

            public int compare(String[] o1, String[] o2) {
                return o1[sortIndex].compareToIgnoreCase(o2[sortIndex]);
            }
        });

        return array;

    }
public static String[][]排序(String[][]数组,final int-sortIndex){
if(array.length<2){
返回数组;
}
sort(数组,新的比较器(){
公共整数比较(字符串[]o1,字符串[]o2){
返回o1[sortIndex]。比较信号案例(o2[sortIndex]);
}
});
返回数组;
}

按字母顺序排列?你能把样本数据贴出来吗。。。为什么?我的链接告诉我们当我们询问某些问题时应该提供什么…我认为这就是您想要的…您是如何生成此数组的?我认为您可能需要创建一个包含三个成员的POJO,然后将POJO添加到数组或列表中,然后为array.sort或Collections.sortCool实现一个自定义比较器这看起来像我需要的,一个问题。我怎样才能让它忽略这个案子?编辑*快速谷歌搜索出现。compareToIgnoreCase(),谢谢!我实际上已经把它和答案联系起来了。。。查看代码段下面的行:)
public static String[][] sort(String[][] array, final int sortIndex) {


        if (array.length < 2) {
            return array;
        }


        Arrays.sort(array, new Comparator<String[]>() {

            public int compare(String[] o1, String[] o2) {
                return o1[sortIndex].compareToIgnoreCase(o2[sortIndex]);
            }
        });

        return array;

    }