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の使用を検討する必要があります。