【问题标题】:How can I convert csv to List with Java 8?如何使用 Java 8 将 csv 转换为 List?
【发布时间】:2019-08-01 12:25:46
【问题描述】:

我想从 CSV 获取空列表或字符串列表。我尝试了以下方法:

String valueStr = "US,UK";
List<String> countryCodes = StringUtils.isBlank(valueStr)
                                    ? Collections.emptyList()
                                    : Arrays.stream(valueStr.split(DELIMITER))
                                            .map(String::trim)
                                            .collect(Collectors.toList());

如何在没有三元运算符的情况下使其更简洁,同时保持简单?这工作正常。只是检查其他方法。

【问题讨论】:

  • 这只是一个 1 记录的 csv 文档吗?
  • 你是说单行吗?那么,是的!
  • 试试这样的:Optional.ofNullable(valueStr) .map(s-&gt;Arrays.stream(s.split(DELIMITER)) .map(String::trim) .collect(Collectors.toList())).orElse(Collections.emptyList());

标签: list java-8


【解决方案1】:
static Pattern p = Pattern.compile(DELIMITER);

public static List<String> getIt(String valueStr) {

    return Optional.ofNullable(valueStr)
                   .map(p::splitAsStream)
                   .map(x -> x.map(String::trim).collect(Collectors.toList()))
                   .orElse(Collections.emptyList());
}

【讨论】:

    【解决方案2】:

    您可以过滤:

    List<String> countryCodes = Arrays.stream(
                StringUtils.trimToEmpty(valueStr).split(DELIMITER))
            .filter(v -> !v.trim().isEmpty())
            .collect(Collectors.toList());
    

    上面的内容在使用空白进行测试时返回一个空列表。它还排除了空白值(例如来自"UK," 的最后一个值)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      相关资源
      最近更新 更多