二维数组依据其中一列的数字排序
二维数组根据其中一列的数字排序!
有一个二维string数组,其中有一列是不重复的数字,比如:
s 2 aaa
r 1 bbb
s 0 ccc
想把该数组按行进行重新排序,按照第二列的数字进行,请问应该如何排序?比如要排序成这样:
s 0 ccc
r 1 bbb
s 2 aaa
求解答!
------解决方案--------------------
利用java.util.Arrays.sort(T[] a,Comparator<T> comparator);
------解决方案--------------------
------解决方案--------------------
和我想的一样,增加了一点代码,处理可能字符串格式不标准,中间空格很多的自动分割处理。
比如:
String[][] s = {
{"s 2 aaa"},
{"raa 13 bbb"},
{"s 0 ccc"},
};
增加正序,反序排列的逻辑。
有一个二维string数组,其中有一列是不重复的数字,比如:
s 2 aaa
r 1 bbb
s 0 ccc
想把该数组按行进行重新排序,按照第二列的数字进行,请问应该如何排序?比如要排序成这样:
s 0 ccc
r 1 bbb
s 2 aaa
求解答!
------解决方案--------------------
利用java.util.Arrays.sort(T[] a,Comparator<T> comparator);
String[][] arr={{"s", "2", "aaa"},{"r", "1" ,"bbb"},{"s" ,"0", "ccc"}};
Arrays.sort(arr, new Comparator<String[]>(){
@Override
public int compare(String[] o1, String[] o2) {
return o1[1].compareTo(o2[1]);
}
});
for(String[] s:arr){
System.out.println(Arrays.toString(s));
}
------解决方案--------------------
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class StringTest {
static String[][] sample = {{"s", "2", "aaa"}, {"r", "1", "bbb"}, {"s", "0", "ccc"}};
public static void main(String[] args) {
print(sample);
sort(sample, 1);
print(sample);
}
/**
* <pre>
* 排序
*
* date: 2014年7月11日
* </pre>
* @author hedley
* @param s 目标排序二维String数组
* @param columnIndex 以第几列为排序对象
*/
static void sort(String[][] s, final int columnIndex) {
List<String[]> helperList = Arrays.asList(s);
Collections.sort(helperList, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1[columnIndex].compareTo(o2[columnIndex]);
}
});
s = (String[][])helperList.toArray();
}
static void print(String[][] s) {
for (String[] s1 : s) {
for (String s2 : s1) {
System.out.print(s2 + " ");
}
System.out.println();
}
}
}
------解决方案--------------------
和我想的一样,增加了一点代码,处理可能字符串格式不标准,中间空格很多的自动分割处理。
比如:
String[][] s = {
{"s 2 aaa"},
{"raa 13 bbb"},
{"s 0 ccc"},
};
增加正序,反序排列的逻辑。
import java.util.Comparator;
import java.util.TreeMap;
public class Demo {
public String[] foo(String[][] s){
TreeMap<Integer, String> map = new TreeMap<Integer, String>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int r = o1.compareTo(o2);
return r; // 反序就 reuturn -r;