私は次のように設定しました:
Set<String>
Set の各要素を ; で分割する必要があります。2番目の要素のみを含む新しいセットを作成します。私はそれを直接一つずつ作るべきですか、それともより良い方法がありますか?ありがとう。
私は次のように設定しました:
Set<String>
Set の各要素を ; で分割する必要があります。2番目の要素のみを含む新しいセットを作成します。私はそれを直接一つずつ作るべきですか、それともより良い方法がありますか?ありがとう。
Set<String> suffixSet = new HashSet<String>();
for (String s : inputSet) {
suffixSet.add(s.split(";")[1])
}
s に ; がない場合の適切なエラー チェックと処理も追加します。現在。
Set<String>
出力が aであることの制約を緩和できる場合は、 Guava を使用して、 Collections2#transform()メソッドCollection<String>
を介して要素が列挙されるまで要素の変換を延期できます。個々の要素で分割を実行するには、カスタム関数を作成するだけです。
しかし、この制約を緩和できない/緩和すべきでない場合は、すでに提案されている個々の反復を実行するのが最善です (はるかに読みやすいため)。
コードは次のようになります。
Set<String> input; //Given
Collection<String> output = Collections2.transform(input, new Function<String,String>() {
@Override
public String apply (String element) {
// As JohnnyO says, add appropriate edge case checking...
return element.split(";")[1];
}
});
情報が少ないのでなんとも言えません。split
セットを実行して別の に追加することを繰り返すことができSet
ます。
またはSet
、たとえばHashMap
、マップを作成するときに、文字列の最初の部分をキーとして、2 番目の部分を値として配置して、必要なときに 2 番目の部分を取得できるようにすることもできます。
または、文字列を自分で作成する場合は、それらを別のセットに直接配置する
か... (十分とは言えません) より多くのオプションを提供します
コードを表示していないため、何をしようとしているのかは推測することしかできません。Set
を反復処理して、それぞれを分割する必要がありますString
。必要に応じて分割方法を使用できます。