【问题标题】:Convert Java Set<String> to Java Comma Separated String [duplicate]将 Java Set<String> 转换为 Java 逗号分隔字符串 [重复]
【发布时间】:2018-12-07 08:58:43
【问题描述】:

我有一个java集

private Set<String> packageCategories;

它的值是 ['Abc','Def']。我想在 UI 中显示 packageCategories 的值,现在显示为 ['Abc','Def'] 但我想将其显示为简单的 'Abc', 'Def'。

我试过了

String.join(",", packageCategories);
context.put("packageCategories", packageCategories);

我收到编译错误

 incompatible types: java.util.Set<java.lang.String> cannot be converted to java.lang.String.

我怎样才能做到这一点?我在 StackOverflow 中搜索,它有将 List 转换为逗号分隔字符串的答案。但是我没有找到任何将 Set 转换为逗号分隔字符串的答案。

Fastest way to put contents of Set<String> to a single String with words separated by a whitespace? 中给出的答案对我不起作用。

PS:我不是 JAVA 开发人员。

【问题讨论】:

  • String.join(",", packageCategories) 应该可以工作
  • 请出示完整代码 (minimal reproducible example)。您显示的代码不对错误负责,因为它可以正常工作,因为Set&lt;String&gt; 的类型为Iterable&lt;? extends CharSequence&gt;(请参阅documentation)。
  • 请分享您正在执行显示的代码。看起来您正在打印集合而不是每个项目。你需要一个循环。
  • @magerine :不一定。

标签: java string set


【解决方案1】:

您可以使用流实现相同的目的:

String collect = packageCategories.stream().collect(Collectors.joining(","));

您可以使用原始代码 sn-p :

String.join(",", packageCategories).replaceAll("[\\[\\]]", "")

【讨论】:

  • 它也适用于Set&lt;String&gt;。 OP显示的代码不对错误负责。
  • 我得到 [6496,89] 找不到符号 [exec] [ERROR] 符号:变量 Collectors [exec] [ERROR] 位置:类 com.collabnet.ctf.monitoring.MonitoringHelperBean [exec] [错误] -> [帮助 1] 使用收集器。
  • 您正在使用哪个版本的 java?这两种解决方案都只适用于 java 1.8 及更高版本。
  • import java.util.stream.Collectors 和你的答案一起工作。请将此也添加到您的答案中。对新手很有帮助
  • 如果您使用的是 IDE,自动导入会为您获取 :)
【解决方案2】:

你需要使用 StringUtils 而不是 String

    StringUtils.join(packageCategories,",")

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 1970-01-01
    • 2013-08-08
    • 2021-04-02
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2014-08-24
    相关资源
    最近更新 更多