问题:排列规则:先按字符串数组里的元素不同依次输出:
如:
String[][] arr=new String[][]{{"1000","业务1"},{"1000","业务2"},{"1000","业务3"},{"2000","业务4"},{"2000","业务5"},{"3000","业务6"}};想要实现输出结果为(不用排序,只要按不同的业务排就行):1000,业务1
2000,业务4
3000,业务6
1000,业务2
2000,业务4
1000,业务3描述:假如有业务代码,1000,2000,3000。但是其中业务代码相同的有多个。想按不同的业务代码先排一遍,再按不同的业务代码排,一直排完。
如:
String[][] arr=new String[][]{{"1000","业务1"},{"1000","业务2"},{"1000","业务3"},{"2000","业务4"},{"2000","业务5"},{"3000","业务6"}};想要实现输出结果为(不用排序,只要按不同的业务排就行):1000,业务1
2000,业务4
3000,业务6
1000,业务2
2000,业务4
1000,业务3描述:假如有业务代码,1000,2000,3000。但是其中业务代码相同的有多个。想按不同的业务代码先排一遍,再按不同的业务代码排,一直排完。
应该就是arr[0][0],arr[0][1]
final Map<String, List<String>> dict = new HashMap<String, List<String>>();
for (int i = 0; i < arr.length; i++) {
String code = arr[i][0];
String name = arr[i][1];
List<String> list = dict.get(code);
if (list == null) {
list = new ArrayList<String>();
dict.put(code, list);
}
list.add(name);
}
Comparator<String[]> comparator = new Comparator<String[]>() { @Override
public int compare(String[] a1, String[] a2) {
String code1 = a1[0];
String code2 = a2[0];
String name1 = a1[1];
String name2 = a2[1];
int index1 = dict.get(code1).indexOf(name1);
int index2 = dict.get(code2).indexOf(name2);
if (index1 == 0 && index2 == 0) {
return code1.compareTo(code2);
}
return index1 - index2;
} };
Arrays.sort(arr, comparator);
for (String[] strings : arr) {
System.out.println(Arrays.toString(strings));
}[1000, 业务1]
[2000, 业务4]
[3000, 业务6]
[1000, 业务2]
[2000, 业务5]
[1000, 业务3]
public static void main(String[] args) {
String[][] arr=new String[][]{{"1000","业务1"},{"1000","业务2"},{"1000","业务3"},{"2000","业务4"},{"2000","业务5"},{"3000","业务6"}};
Arrays.sort(arr, new Comparator() {
public int compare(Object o1, Object o2) {
String[] temp1 = (String[])o1;
String[] temp2 = (String[])o2;
return Integer.parseInt(temp1[0])-Integer.parseInt(temp2[0]);
}
});
for(String[] strs : arr) {
System.out.println(strs[0] + "," + strs[1]);
}
}
import java.util.*;public class Test {
public static void main(String[] args) {
String[][] arr = new String[][]{{"1000","业务1"},{"1000","业务2"},{"1000","业务3"},{"2000","业务4"},{"2000","业务5"},{"3000","业务6"}};
List<String> str = new ArrayList<String>();
List<String> result = new ArrayList<String>();
String s;
for(int i=0; i<arr.length; i++) {
s = arr[i][0] + ":" + arr[i][1];
str.add(s);
}
Iterator<String> iterator = str.iterator();
String[] temp;
String re = "";
while(str.size() >= 0 && iterator.hasNext()) {
s = iterator.next();
temp = s.split(":");
if(re.equals("")) {
result.add(s);
iterator.remove();
} else if(re.equals(temp[0])) {
continue;
} else {
result.add(s);
iterator.remove();
}
if(!iterator.hasNext()) {
iterator = str.iterator();
}
re = temp[0];
}
for(int i=0; i<result.size(); i++) {
System.out.println(result.get(i));
}
}
}运行后的结果是:
1000:业务1
2000:业务4
3000:业务6
1000:业务2
2000:业务5
1000:业务3
不知道能不能满足楼主的要求!