Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中排序多维数组而不使用集合_Java_Sorting_Multidimensional Array - Fatal编程技术网

在java中排序多维数组而不使用集合

在java中排序多维数组而不使用集合,java,sorting,multidimensional-array,Java,Sorting,Multidimensional Array,我们是否可以先对该字符串数组的姓氏排序,然后在不使用集合的情况下对firstname排序?您可以使用实用程序类对数组进行就地排序。 在这种情况下,它看起来像这样: String Name[][]={ {"prakash","kumar"}, {"raj","kappor"}, {"vinod","bhart"}, {"yraj","tkappor"}, {"avinod","fbhart"} };

我们是否可以先对该字符串数组的姓氏排序,然后在不使用集合的情况下对firstname排序?

您可以使用实用程序类对数组进行就地排序。 在这种情况下,它看起来像这样:

String Name[][]={
    {"prakash","kumar"},
    {"raj","kappor"},
    {"vinod","bhart"},
    {"yraj","tkappor"},                         
    {"avinod","fbhart"}
};
    Arrays.sort(Name, new Comparator<String[]>(){
        int LASTNAME=0, FIRSTNAME=1;

        @Override
        public int compare(String[] o1, String[] o2) {
            int c = o1[LASTNAME].compareTo(o2[LASTNAME]);
            if (c != 0) return c;
            return o1[FIRSTNAME].compareTo(o2[FIRSTNAME]);
        }
    });

您可以使用Arrays.sortT[]a,Comparator如果您不想使用java的内置排序机制,那么您可以自己实现一个,如下所示:

String Name[][]={
    {"prakash","kumar"},
    {"raj","kappor"},
    {"vinod","bhart"},
    {"yraj","tkappor"},                         
    {"avinod","fbhart"}
};
    Arrays.sort(Name, new Comparator<String[]>(){
        int LASTNAME=0, FIRSTNAME=1;

        @Override
        public int compare(String[] o1, String[] o2) {
            int c = o1[LASTNAME].compareTo(o2[LASTNAME]);
            if (c != 0) return c;
            return o1[FIRSTNAME].compareTo(o2[FIRSTNAME]);
        }
    });

希望这能有所帮助。

答案是肯定的。如果你提供更多关于你尝试的细节,你可以得到更好的答案。我尝试了所有可能的方法,但没有使用集合,我不知道如何解决this@ChiranjibPatra你试过使用Arrays.sort吗?哪一部分你不明白?您可以随时编辑问题并添加您尝试过的无效代码。@Chiranjibbatra嗨-您考虑过接受答案吗?亲爱的先生,非常感谢您的回答。由于一些个人问题,我无法集中精力讨论这个话题。对此我深表歉意,我很快就会回来。我不想使用集合。我尝试了所有可能的方法,但没有使用集合,我不知道如何解决这个问题。我的答案中没有涉及集合。收藏有什么问题?你对我的回答有什么问题?代码是否编译?结果错了吗?亲爱的帕努,我试过你的代码,但它不能正常工作。它类似于将[0][1]与[1][1]进行比较,因为姓氏返回的值相等,然后用名字进行检查。我感谢你的回答和帮助。但是,如果你能写完整的程序,它将帮助我很多。谢谢你什么意思?此代码将按姓氏对名称进行排序,如果姓氏相等,则顺序由姓氏确定。这不是你要求的吗?
    for(int i=0;i<Name.length;i++) {
        for(int j=i+1;j<Name.length;j++) {
            if(Name[i][1].compareTo(Name[j][1])>0) {
                String[] temp = Name[i];
                Name[i] = Name[j];
                Name[j] = temp;
            }
        }
    }