相关疑难解决方法(0)

如何使用自定义比较器对int数组进行排序?

我需要排序使用自定义比较int数组,但Java的库不为整数提供一种功能与比较器(比较器只能与对象一起使用).有没有简单的方法来做到这一点?

java sorting

61
推荐指数
5
解决办法
8万
查看次数

Java Stream Sort - 具有2个或更多对象标准的比较器

问题:我正在尝试检查是否可以使用2个或更多条件对列表(数据类型为Object的ArrayList)进行排序.请注意我知道使用Comparator with thenComparing功能.我希望检查是否有一种方法可以使用2个或更多标准进行排序,而无需使用自定义数据类型,我可以轻松使用比较器功能.对于1个标准排序,以下代码有效.

在这种情况下,如果我执行以下操作,IntelliJ IDE会立即给出错误 - '无法解析方法'get(int)'for o.get(3)

.sorted(Comparator.comparing(o -> o.get(3).toString()).thenComparing(...)
Run Code Online (Sandbox Code Playgroud)

我在这个论坛示例中也提到了很多线程 - Link1 Link2

代码(适用于单一标准)

List<List<Object>> listOutput = new ArrayList<>();
.........
.........
listOutput = listOutput
                    .stream()
                    .sorted(Comparator.comparing(o -> o.get(3).toString()))
                    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

添加(对象细节)

(注意)

String dataType - exchange,broker,segment,coCode

LocalDate dataType - tradeDate

LocalTime dataType - tradeTime

double dataType - sellPrice,buyPrice

List<Object> lineOutput = new ArrayList<>();
lineOutput.add(exchange);
lineOutput.add(broker);
lineOutput.add(segment);
lineOutput.add(tradeDate);  // Entry Date
lineOutput.add(tradeTime);   // Entry Time
lineOutput.add(coCode);
lineOutput.add(sellPrice - buyPrice);   // Profit / Loss 
listOutput.add(lineOutput); // Add line …
Run Code Online (Sandbox Code Playgroud)

java comparator java-stream

1
推荐指数
1
解决办法
2186
查看次数

标签 统计

java ×2

comparator ×1

java-stream ×1

sorting ×1