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,也许有一种更漂亮的方法可以做到这一点。。。只是猜测而已。