java - java中的集合没有得到排序并给出错误
问题描述
我正在尝试对列表进行排序,但比较器有问题。我的列表是 A,我正在尝试按某个 int 排序,但出现错误...而且我不能使用 lamda 表达式或继承...任何帮助...
代码 :
List<?> sortbenefitList = new ArrayList();
List<SelectItem> sortedBenefitList = new ArrayList<SelectItem>();
Map<String,Integer> map=new HashMap<String, Integer>();
for(IBen benefit : benefitList){
Collections.sort(benefitList, benefit.getStartSegmentNumber());
SelectItem item = new SelectItem();
item.setValue(benefit.getBenefitId().toString());
item.setLabel(benefit.getStartSegmentNumber().toString());
sortedBenefitList.add(item);
}
if(sortedBenefitList != null && !sortedBenefitList.isEmpty()){
Collections.sort(benefitList, benefit.getStartSegmentNumber().toString()) {
public int compare(SelectItem a1, SelectItem a2) {
String a1Lebel = a1.getLabel();
String a2Lebel = a2.getLabel();
Integer a1Int = Integer.parseInt(a1Lebel);
Integer a2Int = Integer.parseInt(a2Lebel);
a1Int.compareTo(a2Int)
map.put();
return a1Int.compareTo(a2Int);
}
});
}
以上是我的代码。
解决方案
您的代码应如下所示:您不需要 2 个列表。只有一个。sort 方法将对它传递的列表进行排序
List<SelectItem> benefitList = new ArrayList<SelectItem>();
//add items
Comparator<SelectItem> comparator = (o1, o2) -> Integer.compare(Integer.parseInt(o1.getLabel()), Integer.parseInt(o2.getLabel()));
Collections.sort(benefitList, comparator);
您也可以使用比较 int :
Comparator<SelectItem> comparator = Comparator.comparingInt(o -> Integer.parseInt(o.getLabel()));
或者如果您不能使用 lambda,请使用匿名类
Comparator<SelectItem> comparator = new Comparator<SelectItem>() {
@Override
public int compare(SelectItem o1, SelectItem o2) {
return Integer.compare(Integer.parseInt(o1.getLabel()), Integer.parseInt(o2.getLabel()));
}
};
推荐阅读
- javascript - 从日期输入框中减去 1 天并使用按钮提交
- xcode - 在 XCode for Unity3D 中构建向后兼容的 macOS 包
- python - SVG 填充嵌套元素中的可用空间
- javascript - React 本机自动完成输入列表未正确覆盖输入
- at-command - 如何使用 FILE AT 命令将目录上传到 BG96?
- c++ - 如何为包含具有不同数据类型的向量的函数提供这些不同数据类型的函数?
- sql - SQL Query,有一定条件的两张表
- laravel - 除了另一个表连接之外,雄辩的递归自连接
- javascript - 如何发送参数ajax
- git - 通过 gitHubDesktop 将文件推送到 gitgub 时出错