我需要在Java中处理逗号分隔的值:
String s = "a,b,c,d";
我需要对它进行标记化(使用逗号作为分隔符),并将其转换为
Set<String>
。是使用StringTokenizer
最好的选择还是有更有效率的方法? String[] a = "a,b,c,d".split( "," );
Set<String> s = new HashSet( Arrays.asList( a ) );
虽然StringTokenizer
是一个很好的选项来分割你的输入字符串,但我个人更喜欢使用String.split()
。
String[] tokens = myString.split(",");
Set<String> set = new HashSet<String>(Arrays.asList(tokens));
split
。 split
会给你一个数组,所以
String[] toks = s.split(",")
然后
Set<String> mySet = new HashSet<String>(Arrays.asList(toks));
如果你只需要一个简单的解决方案,而不需要遵循所有CSV规则,我建议使用{{link1:StringUtils.split
}}(而不是String.split
,因为它会带来正则表达式的开销):
HashSet<String> set = new HashSet<String>(Arrays.asList(StringUtils.split(text, ',')));
Spring Framework提供了StringUtils.commaDelimitedListToSet
,它正是你所需要的。为了这个功能单独引入Spring可能有些过度,但如果你正在使用已经包含Spring的框架,那么它是一个值得注意的选择。