Java 在for:each中动态转换托管项
让我们看看这个简单的场景:Java 在for:each中动态转换托管项,java,for-loop,java-8,type-conversion,Java,For Loop,Java 8,Type Conversion,让我们看看这个简单的场景: String ids = "10_20_30_40"; for (String idString : ids.split("_")) { int id = Integer.parseInt(idString); } 有没有一种方法可以避免这种转换并直接获取int值?比如: for (int id : Integer.parseEach(ids.split("_"))) { } 或 我想到了几个选择。最好在方法中提取for循环的内容,比如说void-use
String ids = "10_20_30_40";
for (String idString : ids.split("_")) {
int id = Integer.parseInt(idString);
}
有没有一种方法可以避免这种转换并直接获取int
值?比如:
for (int id : Integer.parseEach(ids.split("_"))) {
}
或
我想到了几个选择。最好在方法中提取for循环的内容,比如说
void-useId(int-id)
您可以使用Pattern::splitAsStream
:
Pattern underscore = Pattern.compile("_");
underscore.splitAsStream(ids)
.mapToInt(Integer::parseInt)
.forEach(this::useId);
或者,您可以简单地流式传输拆分结果:
Arrays.stream(ids.split("_")).mapToInt(...)...
或者,您可以创建一个数组:
for (int id : underscore.splitAsStream(ids).mapToInt(Integer::parseInt).toArray()) {
}
或者。。。你可以保持你的循环 我想到了几个选择。最好在方法中提取for循环的内容,比如说
void-useId(int-id)
您可以使用Pattern::splitAsStream
:
Pattern underscore = Pattern.compile("_");
underscore.splitAsStream(ids)
.mapToInt(Integer::parseInt)
.forEach(this::useId);
或者,您可以简单地流式传输拆分结果:
Arrays.stream(ids.split("_")).mapToInt(...)...
或者,您可以创建一个数组:
for (int id : underscore.splitAsStream(ids).mapToInt(Integer::parseInt).toArray()) {
}
或者。。。你可以保持你的循环 以下是我的解决方案:
String ids = "10_20_30_40";
Arrays.stream(ids.split("_")).mapToInt(Integer::parseInt)
.forEachOrdered(id -> {
System.out.println(id);
});
以下是我的解决方案:
String ids = "10_20_30_40";
Arrays.stream(ids.split("_")).mapToInt(Integer::parseInt)
.forEachOrdered(id -> {
System.out.println(id);
});
这是一行代码像蜜蜂一样叮咬你吗?@Hackerdarshi nope,但是有了新的Java-8功能,比如streams,也许有一种更漂亮的方法可以做到这一点。。。猜猜看。那一行代码会像蜜蜂一样叮咬你吗?@Hackerdarshi nope,但是有了新的Java-8功能,比如streams,也许有一种更漂亮的方法可以做到这一点。。。只是猜测而已。