小编Nam*_*man的帖子

Java8中分组的复杂性

我想了解下面给出的语句的时间复杂性.(在Java8中)

list.stream().collect(groupingBy(...)); 
Run Code Online (Sandbox Code Playgroud)

任何的想法?

java time-complexity java-8 java-stream collectors

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

有什么用Map.ofEntries()而不是Map.of()

Map.java的文档-

Map.of()Map.ofEntries()静态工厂方法提供了一种方便的方法来创建不可改变的地图.

但是当我已经可以使用重载方法时 ......

Map.of("k1","v1","k2","v2","k3","v3"...);
Run Code Online (Sandbox Code Playgroud)

... Map.ofEntries的用途是什么呢?

返回包含从给定条目中提取的键和值的不可变映射,并且条目本身不存储在映射中.

java hashmap java-9

10
推荐指数
3
解决办法
7948
查看次数

Optional.get()Vs重载了Java-10中的Optional.orElseThrow()

一个人如何避免明确地Exception试图从一个Optional或同时使用中获取价值Optional.get

目前,API可能会受到以下保护orElseThrow:

// exception could be replaced with any other
Integer opt = anyOddInStream.orElseThrow(
                           () -> new NoSuchElementException("No value present"));
Run Code Online (Sandbox Code Playgroud)

然而,get当试图访问类似的东西时,直接实现令人失望(当一个人可能不愿意显式抛出异常时)

// the following not only just fails but throws an exception as well
Integer previous = anyOddInStream.get();
Run Code Online (Sandbox Code Playgroud)

如果一个人想要确保其中Optional一个有值,如果没有,他们不想继续null向前传播怎么办?

java optional java-10

10
推荐指数
2
解决办法
1287
查看次数

如何在Windows上获取OpenJDK 11的tools.jar?

背景:我正在尝试使用此处的说明为Windows构建Hadoop .我有OpenJDK 11并在运行时遇到以下问题mvn package:

Could not resolve dependencies for project org.apache.hadoop:hadoop-annotations:jar:2.5.0-SNAPSHOT: Could not find artifact jdk.tools:jdk.tools:jar:1.6 at specified path C:\Program Files\Java\jdk-11.0.1\..\lib\tools.jar

我意识到tools.jarOpenJDK 11的Windows版本中不存在.我是否也必须从源代码构建它?如何获得tools.jarOpenJDK 11 的Maven文物?

java hadoop maven tools.jar java-11

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

Java Stream Grouping可以收集自定义对象

我有温度等级

class Temperature {
    double minTemp;
    double maxTemp;
    String city;
    String country;
}
Run Code Online (Sandbox Code Playgroud)

我有另一个维护温度集合的类

class Temperatures {
    List<Temperature> temperatures;
}
Run Code Online (Sandbox Code Playgroud)

我想使用streams对countryName进行分组.

我想要的是

public Map<String, Temperatures> temperaturesByCountry()
Run Code Online (Sandbox Code Playgroud)

但我无法使用流将温度作为地图值,我得到的是温度列表.

我的分组实现如下

Map<String, List<Temperature>> result = this.getTemperatures()
                .stream()
                .collect(Collectors.groupingBy(Temperature::getCountry));
Run Code Online (Sandbox Code Playgroud)

我想要Map<String, Temperatures>而不是Map<String, List<Temperature>>

我怎样才能做到这一点.

java grouping hashmap java-8 java-stream

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

如何在Java 8中的两个Streams之间进行搜索

如果我有2个Streams,如下面所示的方法

public Stream<Transaction> getPendingTransaction(Stream<PendingTransaction> pendingTransactionStream,Stream<ProcessedTransaction> processedTransactionStream){ }
Run Code Online (Sandbox Code Playgroud)

我想找到其中存在的所有对象中pendingTransactionStream同样存在于processedTransactionStream基于像一些标准

if transaction.getId()对于存在的Transaction对象是相同的, pendingTransactionStream并且processedTransactionStreamthen该对象是相同的,我们可以在列表中收集它们.

我尝试这样做,但它给出了错误

processedTransactionStream
        .filter( (processedTransaction)->
        {
            pendingTransactionStream.anyMatch(s->s.getTransactionId().equals(processedTransaction.getTransactionId()) );
        } 
        ).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

10
推荐指数
2
解决办法
266
查看次数

Jenkins-将JD​​K 11添加到JDK列表

我需要使用Java 11构建应用程序。
但是,下拉菜单在Java 9处停止。

我该怎么办?OpenJDK也可以接受。
我正在使用最新版本的Jenkins。

编辑:到目前为止,我已经使用下载了二进制文件wget,将其提取到计算机上,并JDK_HOME通过Global Configurations 添加了JDK 条目。

java jenkins java-11

10
推荐指数
2
解决办法
4762
查看次数

在 Java8 中清理数据列表

为了清理数据列表,我创建了一个接受数据列表和要执行的清理操作列表的方法。

public <T> List<T> cleanData(List<T> data, List<Function<T, T>> cleanOps) {
    List<T>dataNew=data.stream().map((str) -> {
        T cleanData = str;
        for(Function<T,T> function:cleanOps) {
            cleanData=function.apply(cleanData);
        }
        return cleanData;
    }).collect(Collectors.toList());
    return dataNew;
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是我们在Collectors.toList()返回一个新列表时再次创建整个列表。我们可以在不使用额外空间的情况下获得相同的结果吗?

下面是调用代码:

public void processData() {
    List<Function<String, String>> cleanOps = new ArrayList<>();
    cleanOps.add(String::toLowerCase);
    cleanOps.add(str -> str.replaceAll(" ", ""));
    List<String> data = new ArrayList<>();
    data.add("John Doe");
    data.add("Jane Doe");
    System.out.println(Arrays.toString(cleanData(data, cleanOps).toArray()));
}
Run Code Online (Sandbox Code Playgroud)

java functional-programming java-8 java-stream

10
推荐指数
2
解决办法
291
查看次数

将类转换为记录时的兼容性问题

我一直在使用以下名为 City

@ToString
@AllArgsConstructor
public class City {
    Integer id;
    String name;
}
Run Code Online (Sandbox Code Playgroud)

并试图将其转换为一个record名为CityRecord作为

record CityRecord(Integer id, String name) {} // much cleaner!
Run Code Online (Sandbox Code Playgroud)

但是转向这样的表示,我们的单元测试之一开始失败。这些测试在内部处理从 JSON 文件中读取的城市列表,并映射到一个对象,进一步计算城市,同时将它们分组到Map. 简化为类似:

List<City> cities = List.of(
        new City(1, "one"),
        new City(2, "two"),
        new City(3, "three"),
        new City(2, "two"));
Map<City, Long> cityListMap = cities.stream()
        .collect(Collectors.groupingBy(Function.identity(),
                Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)

上面的代码断言 true 包含 4 个键,每个键占其出现的 1 个。对于记录表示,结果中的键不超过 3 个Map。是什么导致了这种情况,应该有什么方法来解决这个问题?

java compatibility java-14 java-record

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

由于错误:“不支持的 JVM 版本”,无法使用 Java 14 安装 netbeans 11.3

我正在尝试使用 Java 14 安装 netbeans。

我收到以下错误 -

> sudo ./Apache-NetBeans-11.3-bin-linux-x64.sh --javahome /home/raj/.sdkman/candidates/java/current
Configuring the installer...
Searching for JVM on the system...
Unsupported JVM version at /home/raj/.sdkman/candidates/java/current.
Try to specify another JVM location using parameter --javahome
Run Code Online (Sandbox Code Playgroud)

以下是我的 Java 详细信息 -

> which java
/home/raj/.sdkman/candidates/java/current/bin/java


> java --version
openjdk 14 2020-03-17
OpenJDK Runtime Environment (build 14+36-1461)
OpenJDK 64-Bit Server VM (build 14+36-1461, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

我的操作系统详细信息是 -

> lsb_release -a
LSB Version:    core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0-amd64:desktop-4.0-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch
Distributor ID: openSUSE
Description:    openSUSE Leap 15.1
Release:        15.1 …
Run Code Online (Sandbox Code Playgroud)

java linux netbeans netbeans-11 java-14

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