Java にカンマ区切りの値文字列があります。
String s = "a,b,c,d";
それを (区切り文字としてコンマを使用して) トークン化し、. に変換する必要がありSet<String>
ます。StringTokenizer
私の最善の策ですか、それともより効率的な方法がありますか?
一般的に CSV 解析を解決しようとする場合は、処理する引用符とカンマ エスケープがあることに注意してください。これが、OpenCSVのようなライブラリが存在する理由です。それ以外の場合は、hvgotcodes で説明されているとおりにする必要があります。
String.split() を試してみてください。おそらくこれが最も簡単です。
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));
Spring Frameworkは、StringUtils.commaDelimitedListToSet
まさにあなたが求めていることを提供します。このためだけに Spring を取り込むのはおそらくやり過ぎですが、Spring が既に含まれているフレームワークで作業している場合は、注意が必要なオプションです。
すべての CSV ルールを使用せずに単純なソリューションが必要な場合は、StringUtils.split
(代わりString.split
に正規表現のオーバーヘッドのため)をお勧めします。
HashSet<String> set = new HashSet<String>(Arrays.asList(StringUtils.split(text, ',')));
CSV ルールに従うソリューションが必要な場合は、Commons CSVの使用を検討する必要があります。