相关疑难解决方法(0)

如何强制max()返回Java Stream中的所有最大值?

我已经测试了Java 8 lambdas和stream上的max()函数,看起来如果执行max(),即使多个对象比较为0,它也会返回绑定候选者中的任意元素进一步考虑.

对于这样的最大预期行为是否有明显的技巧或功能,以便返回所有最大值?我没有在API中看到任何内容,但我确信它必须存在比手动比较更好的东西.

例如:

//myComparator is an IntegerComparator
Stream.of(1,3,5,3,2,3,5).max(myComparator).forEach(System.out::println);
//Would print 5,5 in any order.
Run Code Online (Sandbox Code Playgroud)

java collections lambda java-8 java-stream

25
推荐指数
3
解决办法
1万
查看次数

Java 8 Stream用于确定文本文件中的最大计数

对于我的任务,我必须用循环来替换for循环,这些循环计算文本文档中单词的频率,并且我无法计算出TODO部分.

String filename = "SophieSallyJack.txt";
if (args.length == 1) {
    filename = args[0];
}
Map<String, Integer> wordFrequency = new TreeMap<>();

List<String> incoming = Utilities.readAFile(filename);

wordFrequency = incoming.stream()
    .map(String::toLowerCase)
    .filter(word -> !word.trim().isEmpty())
    .collect(Collectors.toMap(word -> word, word -> 1, (a, b) -> a + b, TreeMap::new));                

int maxCnt = 0;

// TODO add a single statement that uses streams to determine maxCnt
for (String word : incoming) {
    Integer cnt = wordFrequency.get(word);
    if (cnt != null) {
        if (cnt > maxCnt) { …
Run Code Online (Sandbox Code Playgroud)

java loops file java-stream

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

检查日期是否重叠并返回最大计数

我有多个开始和结束的日期。这些日期可能如下所示:

d1:      |----------|
d2:            |------|
d3:        |--------------|
d4:                         |----|
d5:   |----|
Run Code Online (Sandbox Code Playgroud)

现在我需要检查重叠日期的最大计数。所以在这个例子中,我们得到最多 3 个重叠日期(d1、d2、d3)。考虑一下,可以有 0 到 n 个日期。

你能帮我完成这个任务吗?先感谢您。

更新

输入:带有开始和结束点的 Java 日期列表,例如 List,其中 MyCustomDate 包含开始和结束日期

输出:重叠日期(作为 MyCustomDate 的列表)

每个时间跨度包括一个带有小时和秒的 LocalDateTime 类型的开始和结束点。

java compare date

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

标签 统计

java ×3

java-stream ×2

collections ×1

compare ×1

date ×1

file ×1

java-8 ×1

lambda ×1

loops ×1