在日常面试过程中,自定义排序是一个出现频率比较高的题目。以list的自定义排序为例,一个多级排序的示例如下:
List<String[]> res = new ArrayList<>(); for(int i=1;i<list.size();i++){ res.add(list.get(i).split(" ")); } res.sort(new Comparator<String[]>(){ @Override public int compare(String[] s1,String[] s2){ if(Double.valueOf(s1[1])>Double.valueOf(s2[1])){ return -1; }else if(Double.valueOf(s1[1])<Double.valueOf(s2[1])){ return 1; }else{ if(Double.valueOf(s1[3])>Double.valueOf(s2[3])){ return 1; }else if(Double.valueOf(s1[3])<Double.valueOf(s2[3])){ return -1; }else{ if(Double.valueOf(s1[2])<Double.valueOf(s2[2])){ return 1; }else if(Double.valueOf(s1[2])>Double.valueOf(s2[2])){ return -1; }else{ return 0; } } } } });
- 排序方式详解:
a. 自定义Comparator方法 b. 自定义升序或降序 1. 升序方式:if(val1 < val2) return -1; 2. 降序方式:if(val1 > val2) return -1;
- 小数的处理
保留两位小数: String.format("%.2f",Double.parseDouble(String).toString() 常见错误:f!=java.lang.String 原因:String.format("%.2f",temp).toString()中,temp的值为String类型,需要做转换,如上。