背景
需求是这样的,给出一个字符串列表,需要将这个列表的字符串按照指定好的顺序进行排序,比如我们指定string字符串最终输出的顺序如下:
纯品
康师傅
六神
洞庭山
美的
现在,给你一个如下顺序的list:
- 六神
- 纯品
- 美的
- 康师傅
- 洞庭山
如何将所给的list输出为指定顺序的list是我们接下来需要编码实现的。
注意: 所给list列表字符的顺序是无序的,上面的给出的list列表顺序只是个例子,实际可能会出现任何顺序
实现
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
/**
* Java对String进行指定顺序排序
*
* @author jjh
* @date 2020/06/23
**/
public class SortTest {
public static void main(String[] args) {
// 指定需要最终排序的顺序
HashMap<String, Integer> keyMap = new HashMap(){{
put("纯品", 1);
put("康师傅", 2);
put("六神", 3);
put("洞庭山", 4);
put("美的", 5);
}};
// 需要做排序的字符串列表
ArrayList updateList = new ArrayList() {{
add("六神");
add("纯品");
add("美的");
add("康师傅");
add("洞庭山");
add("洞庭2");
}};
System.out.println("排序前:"+updateList);
// 进行排序操作
updateList.sort(new Comparator() {
@Override
public int compare(Object o1, Object o2) {
// 处理不存在指定排序列表中的字符串
if (keyMap.get(o1) == null || keyMap.get(o2) == null) {
return 1;
}
return keyMap.get(o1).compareTo(keyMap.get(o2));
}
});
System.out.println("排序后:"+updateList);
}
}
结果
运行该程序可以看到,输出的结果已经是按我们指定的顺序输出的了: