小编ETO*_*ETO的帖子

将 HOCON 字符串转换为 Java 对象

我的 Web 服务之一返回 Java 字符串下方:

[
  {
    id=5d93532e77490b00013d8862, 
    app=null,
    manufacturer=pearsonEducation, 
    bookUid=bookIsbn, 
    model=2019,
    firmware=[1.0], 
    bookName=devotional, 
    accountLinking=mandatory
  }
]
Run Code Online (Sandbox Code Playgroud)

我有上述字符串的等效 Java 对象。我想将上述 java 字符串类型转换或转换为 Java 对象。

我无法对它进行类型转换,因为它是一个字符串,而不是一个对象。所以,我试图将 Java 字符串转换为 JSON 字符串,然后我可以将该字符串写入 Java 对象,但没有运气出现invalid character "="异常。

您可以更改 Web 服务以返回 JSON 吗?

那是不可能的。他们没有改变他们的合同。如果他们返回 JSON,那就太容易了。

java parsing json pojo hocon

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

Java Lambda 用于在两个 for 循环内中断

我正在尝试将 Java 8 中的迭代代码块转换为函数式。函数式方法无法在共享的集合中找到匹配的消息。

List<Optional<Message>> allMessages = new ArrayList<>();

Set<Status> allStatuses = getAllStatuses();

//Iterative : Working
Set<StatusMessage> set = new HashSet<>(STATUS_MESSAGE.values());
for (StatusMessage statusMessage : set) {
    for (Status status : statusMessage.getStatusAndInfo().keySet()) {
        Optional<Message> message = MessageBuilder.createMessage(allStatuses, status, this::createMessage);
        if (message.isPresent()) {
            allMessages.add(message);
            break;
        }
    }
}

//Functional : Not working  - Never adds anything to the 
//map even when matching status is present
STATUS_MESSAGE.values().stream()
        .distinct()
        .map(statusMessage -> statusMessage.getStatusAndInfo().keySet())
        .flatMap(Collection::stream)
        .map(key -> MessageBuilder.createMessage(allStatuses, key, this::createMessage))
        .anyMatch(allMessages::add);
Run Code Online (Sandbox Code Playgroud)

MessageBuilder.createMessage如下所示:

Optional<Status> …
Run Code Online (Sandbox Code Playgroud)

java collections functional-programming java-8 java-stream

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

Java BinaryOperator 和工厂方法。如何返回第一个参数?

我试图通过下一个代码将我的流转换为映射:

Collectors.toMap(City::key, Function.identity(), (first, second) -> first)
Run Code Online (Sandbox Code Playgroud)

我关于最后一个 lambda 的问题。

(first, second) -> first
Run Code Online (Sandbox Code Playgroud)

如果发生碰撞,我经常需要获取任何元素或始终获取第一个元素。我明白,这已经是简短而清晰的形式。但是还是。对于Function类,我们有工厂方法Function.identity(),它按原样返回传递的参数。我们有 forBiFunction或 for的工厂方法BinaryOperator吗?或者可能是接近Function.identity(). 我也知道BinaryOperator.minBy()BinaryOperator.maxBy(),但他们更“详细”,而不是比如此清晰的方法Function.identity()

java collections lambda java-8 java-stream

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

如何.count() list.stream() 的子对象?

public static int amountKurse (List<Studie> lstd) {
    int result = (int) lstd.stream().map(Studie::getKurse).count();
    return result;
}

private Map<Kurs,Integer> kurse = new HashMap<>();

public Set<Kurs> getKurse(){
    return kurse.keySet();
}
Run Code Online (Sandbox Code Playgroud)

我想计算Kurse我所有Studie对象中的数量。我目前的结果是20,什么时候应该是132 我猜我的功能只是计算数量Studie 将不胜感激这方面的一些帮助。

java mapping collections java-8 java-stream

-2
推荐指数
1
解决办法
663
查看次数