Я пытаюсь перенести это руководство по Java в Xojo. Я изо всех сил пытаюсь распаковать приведенную ниже функцию Set
, потому что, хотя она короткая и элегантная, она вмещает множество преобразований в небольшое пространство, и я не уверен, правильно ли я ее понимаю. Это сложно, поскольку Java не является моим основным языком, а Xojo не поддерживает дженерики:
public interface GraphNode {
String getId();
}
public class Graph<T extends GraphNode> {
private final Set<T> nodes;
private final Map<String, Set<String>> connections;
public T getNode(String id) {
return nodes.stream()
.filter(node -> node.getId().equals(id))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("No node found with ID"));
}
public Set<T> getConnections(T node) {
return connections.get(node.getId()).stream()
.map(this::getNode)
.collect(Collectors.toSet());
}
}
Я в основном могу только понять, что происходит до вызова метода .stream()
:
- Получите
Id
из пройденныхnode
GraphNode
- Получите
Set<String>
изconnections
Map
, ключ которого соответствует полученномуId
Что я не понимаю, так это то, что здесь происходит:
.map(this::getNode).collect(Collectors.toSet())
Может ли кто-нибудь предоставить псевдокод, чтобы объяснить это?