可以的int
是null
在Java中?
例如:
int data = check(Node root);
if ( data == null ) {
// do something
} else {
// do something
}
Run Code Online (Sandbox Code Playgroud)
我的目标是编写一个返回一个函数int
.表示int
存储在节点的高度,如果节点不存在,它将为null,我需要检查它.
我这样做是为了完成家庭作业,但这个特定的部分不是作业的一部分,它只是帮助我完成我正在做的事情.
感谢您的评论,但似乎很少有人真正阅读过代码下的内容,我在问我还能如何实现这一目标; 很容易弄清楚它不起作用.
如何获得与流中的条件匹配的第一个元素?我试过这个但是没用
this.stops.stream().filter(Stop s-> s.getStation().getName().equals(name));
Run Code Online (Sandbox Code Playgroud)
该条件不起作用,filter方法在Stop之外的其他类中调用.
public class Train {
private final String name;
private final SortedSet<Stop> stops;
public Train(String name) {
this.name = name;
this.stops = new TreeSet<Stop>();
}
public void addStop(Stop stop) {
this.stops.add(stop);
}
public Stop getFirstStation() {
return this.getStops().first();
}
public Stop getLastStation() {
return this.getStops().last();
}
public SortedSet<Stop> getStops() {
return stops;
}
public SortedSet<Stop> getStopsAfter(String name) {
// return this.stops.subSet(, toElement);
return null;
}
}
import java.util.ArrayList;
import java.util.List;
public class Station {
private final …
Run Code Online (Sandbox Code Playgroud) 我有一个这样的变量:
List<Double> frameList = new ArrayList<Double>();
/* Double elements has added to frameList */
Run Code Online (Sandbox Code Playgroud)
如何double[]
在Java中使用具有高性能的变量来获取新变量?
我正在阅读流抽象的java 8 API,但我不太理解这句话:
中间操作返回一个新流.他们总是懒惰; 执行诸如filter()之类的中间操作实际上并不执行任何过滤,而是创建一个新流,当遍历时,该流包含与给定谓词匹配的初始流的元素.在执行管道的终端操作之前,不会开始遍历管道源.
当过滤操作创建新流时,该流是否包含已过滤的元素?似乎理解流仅在遍历时才包含元素,即具有终端操作.但是,包含过滤流的内容是什么?我糊涂了!!!
我正在为Java 8中的文件编写解析器.使用文件读取Files.lines
并返回顺序Stream<String>
.
每一行都映射到一个数据对象,Result
如下所示:
Result parse(String _line) {
// ... code here
Result _result = new Result().
if (/* line is not needed */) {
return null;
} else {
/* parse line into result */
return _result;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以将流中的每一行映射到相应的结果:
public Stream<Result> parseFile(Path _file) {
Stream<String> _stream = Files.lines(_file);
Stream<Result> _resultStream = _stream.map(this::parse);
}
Run Code Online (Sandbox Code Playgroud)
但是,流现在包含null
我要删除的值:
parseFile(_file).filter(v -> v != null);
Run Code Online (Sandbox Code Playgroud)
我如何组合地图/过滤器操作,如我所知,parseLine/_stream.map
是否需要结果?
我知道如何通过谓词查找列表的第一个元素: Java 8通过谓词查找第一个元素
有没有一种简单的方法来获取该元素的索引?
编辑:链接的问题确实提供了答案,但是由于其表达方式,我在搜索时找不到它。因此,我宁愿保留这个问题。
使用Java 8+,您可以轻松找到与a匹配的集合的所有元素Predicate
.
someCollection.stream().filter(somePredicate)
Run Code Online (Sandbox Code Playgroud)
然后你可以找到第一个元素:
someCollection.stream().filter(somePredicate).findFirst()
Run Code Online (Sandbox Code Playgroud)
但问题是,它会Predicate
针对所有元素运行.有没有一种干净的方法只能运行Predicate
反对元素,直到找到第一个匹配,然后返回它,就像它一样anyMatch
(但返回一个boolean
告知是否找到一个)?
我想acts
用一些枚举值填充数组.迭代时我想从控制台输入命令,但我的if语句找不到任何匹配,我总是得到输出"Incorrect"
.
我的代码:
Action[] acts = new Action[n];
for(int i = 0; i < n; i++) {
System.out.println("Enter act: ");
Scanner in1 = new Scanner(System.in);
String s = in1.next();
acts[i] = new Action();
if (s.equals("rotate_forw"))
acts[i].type = ActionType.RotF;
if (s.equals("rotate_back"))
acts[i].type = ActionType.RotB;
if (s.equals("shift_forw"))
acts[i].type = ActionType.ShiftF;
if (s.equals("shift_back"))
acts[i].type = ActionType.ShiftB;
else
System.out.println("Incorrect");
}
Run Code Online (Sandbox Code Playgroud) 如何将下面带有 return 语句的 for 循环转换为 lambda 表达式或带有过滤器的流。
for(PhysicianData d : physicianDataList)
{
if(d.getPhysicianName().equals(physicianName))
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud) java ×9
java-stream ×6
java-8 ×4
arrays ×1
casting ×1
collections ×1
double ×1
enums ×1
filtering ×1
lambda ×1
list ×1
performance ×1
predicate ×1