我的 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 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) 我试图通过下一个代码将我的流转换为映射:
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()。
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 ×4
collections ×3
java-8 ×3
java-stream ×3
hocon ×1
json ×1
lambda ×1
mapping ×1
parsing ×1
pojo ×1