Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 用comarator理解多维数组排序_Java_Android - Fatal编程技术网

Java 用comarator理解多维数组排序

Java 用comarator理解多维数组排序,java,android,Java,Android,我的字符串数组看起来像字符串[][]cat=newstring[13][4] 我想按第二列“[[2]”中的第三个值对所有[13]进行排序 int myNum=0; sort(cat,新的比较器(){ @凌驾 公共整数比较(最终字符串[]entry1,最终字符串[]entry2){ 最终字符串e1=entry1[1]; 最终字符串e2=entry2[1]; 返回e1.compareTo(e2); } }); for(最终字符串[]s:cat){ System.out.println(“排序:“+s

我的字符串数组看起来像字符串[][]cat=newstring[13][4]

我想按第二列“[[2]”中的第三个值对所有[13]进行排序

int myNum=0;
sort(cat,新的比较器(){
@凌驾
公共整数比较(最终字符串[]entry1,最终字符串[]entry2){
最终字符串e1=entry1[1];
最终字符串e2=entry2[1];
返回e1.compareTo(e2);
}
});
for(最终字符串[]s:cat){
System.out.println(“排序:“+s[0]+”“+s[1]+”“+s[2]+”“+s[3]);
试一试{
myNum=Integer.parseInt(s[2]);
}捕获(NumberFormatException nfe){
System.out.println(“无法解析”+nfe);
}
如果(myNum>3&&s[1]。等于(“1”)){
更多价值2.添加(s[1]);
更多信息2.添加(s[3]);
}
} 
如何选择排序依据的值。在我上面的代码中,它是按第一列排序的,但我希望按第三列排序。我不确定要修改什么以及为什么要修改它。
我读书没用。
和版本7在比较器中,在此处选择值:

final String e1 = entry1[1];
final String e2 = entry2[1];

只需将[1]替换为[2]或[3](因为我不理解“第二列中的第三个值”)。

而不是
最终字符串[]s:cat
你可以把
最终字符串s:cat[2]

这将获得第3行中的所有字符串,然后您可以对它们进行排序

这很接近,但由于您使用的是多维数组,因此您必须在某个地方处理它,无论是在比较函数中还是在调用它的函数中。取决于您是将2d数组传入还是仅从2d数组中传递数组(当前代码看起来应该是后者)。我不理解“2d数组”和“2d数组中的数组”之间的区别。更准确地说,“数组中的数组”对我来说没有意义。OK entry1[x]其中x是第二个数组的列[first array][second array]“第三个值”实际上是零基的x[2]点,但是第二列是第三列,而不是第二列。还有一件事:第2列似乎包含整数。如果使用字符串比较来比较它们,则可能得不到预期的结果(例如(“9”>“33”)。在这种情况下,您的比较器应该解析整数并进行比较。如果我理解正确,OP不希望提取行(或列)的元素并对它们进行排序,他希望根据给定列中的值对整个数组进行排序,而不会丢失信息。啊。好啊我想我不明白他在问什么
final String e1 = entry1[1];
final String e2 = entry2[1];