我有一个对象列表,需要根据特定的顺序排序。如下代码所示:
preOrderedList = {"bmw","audi","benz"};
这也是当它得到排序,只有名称(“宝马”,“奥迪”,“奔驰”)的位置正在改变。我在汽车课上还有一个字段,那就是数量。数量将处于相同位置。这个职位也应该随着名字而改变。
final List<String> preOrderedList = Arrays.asList("bmw","audi","benz");
Collections.sort(carList, new Comparator<Car>() {
public int compare(Car l1, Car l2) {
if (preOrderedList.contains(l1.getName().trim()) && preOrderedList.contains(l2.getName().trim())) {
return preOrderedList.indexOf(l1.getName().trim()) - preOrderedList.indexOf(l2.getName().trim());
}
if (preOrderedList.contains(l1.getName().trim())) {
return -1;
}
if (preOrderedList.contains(l2.getName().trim())) {
return 1;
}
return l1.getName().trim().toString().compareTo(l2.getName().trim().toString());
}
});
我希望输出为{“BMW”,“Audi”,“Audi”,“Benz”}
,但实际输出为{“BMW”,“Audi”,“Benz”,“Audi”}。
这可以通过Guava的排序巧妙地解决。explicit
:
Collections.sort(carList, Ordering.explicit(preOrderedList).onResultOf(new Function<Car, String>() {
@Override
public String apply(Car car) {
return car.getName();
}
}));
Guava thas支持Java6的最后一个版本是Guava 20.0:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
逻辑 输出为
问题内容: 可以说我有这样的表: 我想得到的是这样的表: 发生的第一件事是基于column进行排序。 发生的第二件事是基于列的,但仅基于列中具有相同数字的行 在不使用任何数据库引擎的情况下应该如何解决此问题? 问题答案: 通常,通常使用where 是包含所有三个值的类型(例如,“ foo”,第一行的5、0)来执行此操作。 然后,您将编写一个比较在中呈现给它的两个对象的Int1值的,如果给出了明确的
问题内容: 我有以下查询,该查询基于逗号分隔的列表返回行 我希望此查询的结果以ID在列表中的顺序返回。SQL可以做到吗? 提前致谢 问题答案: 如果您需要输出以特定顺序显示,则需要使用服务器可以排序的内容来指定该顺序。不知道您要使用哪个引擎,一般的方案是创建一个临时表或使用行集构造函数将每个记录ID与所需的排序顺序配对。 例如(SQL Server)
在上面的示例中,子集列表有23个元素。对于gridSize为12,子集列表中的23个元素应该分布在12个分区中,因此在这种情况下,每个分区应该有2个子集列表中的元素。 这个问题与spring批处理分区有关。列表中的整数实际上是spring批处理程序要处理的用户ID。有些用户比其他用户需要更多的处理时间。因此在分区过程中可能发生的情况是,某些分区可能包含比其他分区占用更多处理时间的更多用户。这会导致
按降序排序的LinkedHashSet的输出。 对不起,如果这是混淆,我不知道如何去排序像这样。
我想根据两个属性对列表进行排序,但要满足一定的条件。下面的类有两个属性--memberid和membernumber。其值如下所示。