在Java中将CSV转换为Set<String>

4

我需要在Java中处理逗号分隔的值:

String s = "a,b,c,d";

我需要对它进行标记化(使用逗号作为分隔符),并将其转换为Set<String>。是使用StringTokenizer最好的选择还是有更有效率的方法?

你可能会觉得这很有趣:https://dev59.com/Z07Sa4cB1Zd3GeqP1jjl#2972215 - Francisco Spaeth
6个回答

7

如果您试图解析CSV文件,请注意需要处理引号和逗号转义。这就是为什么像OpenCSV这样的库存在的原因。否则,您只需要按照hvgotcodes所描述的方式进行操作即可。


3
尝试使用String.split(),这可能是最简单的方法。
    String[] a = "a,b,c,d".split( "," );
    Set<String> s = new HashSet( Arrays.asList( a ) );

2

虽然StringTokenizer是一个很好的选项来分割你的输入字符串,但我个人更喜欢使用String.split()

String[] tokens = myString.split(",");
Set<String> set = new HashSet<String>(Arrays.asList(tokens));

1
我会使用splitsplit会给你一个数组,所以

String[] toks = s.split(",")

然后

Set<String> mySet = new HashSet<String>(Arrays.asList(toks));


0

如果你只需要一个简单的解决方案,而不需要遵循所有CSV规则,我建议使用{{link1:StringUtils.split}}(而不是String.split,因为它会带来正则表达式的开销):

HashSet<String> set = new HashSet<String>(Arrays.asList(StringUtils.split(text, ',')));

如果您需要遵守 CSV 规则的解决方案,您应该考虑使用 Commons CSV

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接