-1

私は次のように設定しました:

Set<String>

Set の各要素を ; で分割する必要があります。2番目の要素のみを含む新しいセットを作成します。私はそれを直接一つずつ作るべきですか、それともより良い方法がありますか?ありがとう。

4

4 に答える 4

2
Set<String> suffixSet = new HashSet<String>();
for (String s : inputSet) {
      suffixSet.add(s.split(";")[1])
}

s に ; がない場合の適切なエラー チェックと処理も追加します。現在。

于 2013-01-17T20:01:15.723 に答える
2

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]; 
    }
});
于 2013-01-17T20:08:20.880 に答える
1

情報が少ないのでなんとも言えません。splitセットを実行して別の に追加することを繰り返すことができSetます。
またはSet、たとえばHashMap、マップを作成するときに、文字列の最初の部分をキーとして、2 番目の部分を値として配置して、必要なときに 2 番目の部分を取得できるようにすることもできます。
または、文字列を自分で作成する場合は、それらを別のセットに直接配置する
か... (十分とは言えません) より多くのオプションを提供します

于 2013-01-17T20:02:06.603 に答える
1

コードを表示していないため、何をしようとしているのかは推測することしかできません。Setを反復処理して、それぞれを分割する必要がありますString必要に応じて分割方法を使用できます。

于 2013-01-17T19:58:03.113 に答える