java - 如何在 java8 中使用流重写以下代码

标签 java java-8 java-stream

private void enrichWithFieldList(String desc, String value, List<Data> dataList, List<Field> fieldList) {
        int index = 1;
        for(Data data : dataList){
            if(!"english".equals(data.getCode())){
                createFieldList(desc+index, data.getCode(), fieldList);
                createFieldList(value+index++, data.getValue(), fieldList);
            }
        }
    }

private void createFieldList(String fieldName, String fieldValue, List<Field> fieldList) {
        Field customField = new Field();
        customField.setName(fieldName);
        customField.setValue(fieldValue);
        fieldList.add(customField);
}

谁能告诉我如何使用 Java8 流重写上面的代码?

最佳答案

据我所知,您正在尝试根据您的数据列表提出一个新的字段列表。如果是这样,最好直接从流中创建它,而不是将其添加到传递给您的方法的列表中。

类似下面的内容:

private List<Field> makeEnrichedFieldList(String desc, String value, List<Data> dataList) {
    return IntStream.range(0, dataList.size())
        .filter(i -> !dataList.get(i).getCode().equals("english"))
        .boxed ()
        .flatMap(i -> Stream.of(new Field(desc + i + 1, dataList.get(i).getCode()),
                                new Field(value + i + 1, dataList.get(i).getValue()))
        .collect(Collectors.toList());
}

关于java - 如何在 java8 中使用流重写以下代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34388677/

相关文章:

lambda - optional <List> Java 8 lambda 表达式获取第一个元素

java - MockMvc - 预期状态 :<200> but was:<302>

java - java 中包含函数的表达式求值

Java 类 Vectors 运行太慢

java - 使用 java 8 流将 List<Staging<Importable>> 转换为 List<Staging<ImportableImpl>>

java - 如果流中的流为空,如何记录消息?

java - 配置为监听端口 8080 的 Tomcat 连接器无法启动。该端口可能已在使用中或者连接器可能配置错误

java - 如何找到 LocalDate java 之间的天数?

Java 8 Streams 干扰 forEach 中的一个字段

java - 从流中收集连续的对