test
1
List list= new ArrayList();{{
list.add(“其他类型企业”);
list.add(“中型企业”);
list.add(“小型企业”);
list.add(“大型企业”);
list.add(“新型企业”);
}}
// 大型,中型,小型,在前其他的sort排序即可。
// Collections.sort(list);
System.out.println(list.toString());
如上所示,list排序后要求大中小型优先排序,其后的顺序按照sort排序即可。
诸位有没有简单的实现?
如果没有,在下只能(遍历list,然后再拆分成两个list,再组合成一个)。
test
3
HashMap<String,Integer> sortMap=new HashMap<>(3);
sortMap.put(“大型”,1);
sortMap.put(“中型”,2);
sortMap.put(“小型”,3);
list.sort((o1, o2) -> {
String o1Str=o1.substring(0,2);
String o2Str=o2.substring(0,2);
Integer sort1=sortMap.get(o1Str);
Integer sort2=sortMap.get(o2Str);
if(sort1!=null && sort2!=null ){
return Integer.compare(sort1,sort2);
}else{
if(sort1!=null){
return -1;
}else if(sort2!=null){
return 1;
}else{
return o1.compareTo(o2);
}
}
});
PC哥名不虚传
Jonny
4
假装回答
package com.pay;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
public class MySort {
public static void main(String[] args) {
List list = new ArrayList();
{
{
list.add("其他类型企业");
list.add("中型企业");
list.add("小型企业");
list.add("大型企业");
list.add("新型企业");
}
}
System.out.println("原数据:");
System.out.println(list + "\n");
System.out.println("排序处理后:");
System.out.println(sort(list));
}
public static List<String> sort(List<String> list) {
// 大型,中型,小型,在前其他的sort排序即可。
final HashMap<String, Integer> sortMap = new HashMap<String, Integer>(3);
sortMap.put("大型", 1);
sortMap.put("中型", 2);
sortMap.put("小型", 3);
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
String string1 = o1.toString().substring(0, 2);
String string2 = o2.toString().substring(0, 2);
Integer sort1 = sortMap.get(string1);
Integer sort2 = sortMap.get(string2);
if (sort1 != null && sort2 != null) {
return Integer.compare(sort1, sort2);
} else {
if (sort1 != null) {
return -1;
} else if (sort2 != null) {
return 1;
} else {
return 0;
}
}
}
});
return list;
}
}
运行结果
原数据:
[其他类型企业, 中型企业, 小型企业, 大型企业, 新型企业]
处理后
[大型企业, 中型企业, 小型企业, 其他类型企业, 新型企业]
ojbk
7
public static void main(String[] args) {
List<String> list = new ArrayList<>();
{
{
list.add("其他类型企业");
list.add("中型企业");
list.add("小型企业");
list.add("大型企业");
list.add("新型企业");
}
}
System.out.println("原数据:");
System.out.println(list + "\n");
System.out.println("排序处理后:");
System.out.println(sort(list));
}
public static List<String> sort(List<String> list) {
// 大型,中型,小型,在前其他的sort排序即可。
final HashMap<String, Integer> sortMap = new HashMap<String, Integer>(3);
sortMap.put("大", 1);
sortMap.put("中", 2);
sortMap.put("小", 3);
Collections.sort(list, new Comparator<String>() {
public int compare(String s1, String s2) {
int n1 = s1.length();
int n2 = s2.length();
int min = Math.min(n1, n2);
for (int i = 0; i < min; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
if (c1 != c2) {
Integer sort1 = sortMap.get(String.valueOf(c1));
Integer sort2 = sortMap.get(String.valueOf(c2));
if(sort1 ==null || sort2==null) {
continue;
}
return sort1 - sort2;
}
}
return n1 - n2;
}
});
return list;
}
}