我有一个整数列表,我愿意检查是否有一个等于0或1的整数。
如果存在这样的Integer,我应该返回一个度数等于找到的特定整数的节点,除非我应该返回null;
您可以看到我的程序运行良好,但是我正在寻求更好的解决方案,尤其是在 getNode()方法中使用更少的代码。
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Optional;
public class Example {
public static void main( String[] args ) throws IOException {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);list.add(2);list.add(3);
System.out.println(getNode(list));
}
public static Node getNode(ArrayList<Integer> list ){
Optional<Integer> index = list.stream().filter(l->l==1 || l==2).findAny();
if (index.isPresent())
return new Node(index.get());
else
return null;
}
}
class Node{
int degree;
Node(int degree){
this.degree = degree;
}
@Override
public String toString() {
return this.degree+"";
}
}
答案 0 :(得分:0)
您可以将其简化为:
public static Node getNode(ArrayList<Integer> list) {
return list.stream() // Stream<Integer>
.filter(l -> l == 1 || l == 2)
.findAny() // Optional<Integer>
.map(Node::new) // Optional<Node>
.orElse(null); // Node or null
}