私にFluentIterable
がある場合、インデックス012Wの要素を持たない新しいFluentIterable
を取得するにはどうすればよいですか?Guavaのインデックスに要素を持たないIterable
0
A
答えて
3
これには何も組み込まれておらず、特に大きな実装もありません。
変更可能なリストを使用してremove(int index)
を呼び出すことを正直にお勧めします。流暢なビューチェーンは実際にこの種のユースケースには有効ではないようです。ここで
0
は、変更可能なリストなしでそれを行う方法です:
ImmutableList<String> list = ImmutableList.copyOf(myIterable);
FluentIterable.concat(
list.subList(0, i - 1),
list.subList(i + 1, list.size() - 1));
#subList
が元ImmutableList
によって支えられていることを注意ので、我々は唯一の反復:
FluentIterable.concat(myIterable.limit(i), myIterable.skip(i + 1));
そしてここでは、わずかによりパフォーマンスの方法ですここではmyIterable
までです。
0
変換を適用して、各要素をそのインデックスに関連付け、必要のないインデックスで要素を除外し、最後に各要素をその要素のインデックスに戻して変換することで、これを行うことができます。例えば:
fluentIterable
.transform(new WithIndexTransformer<>())
.filter(indexedValue -> indexedValue.getIndex() != i)
.transform(IndexedValue::getValue);
IndexedValue.java
public class IndexedValue<T> {
private final int index;
private final T value;
IndexedValue(int index, T value) {
this.index = index;
this.value = value;
}
public int getIndex() {
return index;
}
public T getValue() {
return value;
}
}
WithIndexTransformer.java
public class WithIndexTransformer<T> implements Function<T, IndexedValue<T>> {
private int index = 0;
@Override
public IndexedValue<T> apply(T input) {
return new IndexedValue<>(index++, input);
}
}
関連する問題
- 1. Iterableで要素についてのアサーションを作成
- 2. Z-インデックスが要素を持ち込まない
- 3. 相対的に配置された要素を持つZ-インデックス
- 4. クリック可能な要素を持つAndroidのインデックス付きリスト
- 5. 指定されたZ-インデックスを持つ要素を検索
- 6. より高いz-インデックスを持つ要素上のマウスホイール
- 7. ロード機能を持たないguavaキャッシュを使用する
- 8. インデックスを持つリストの要素を印刷するには?
- 9. 要素をクリックし、別のノードリストの同じインデックスを持つ異なる要素にクラスを追加する
- 10. テーブルにインデックスを持たない主キー?
- 11. 親要素がクラスを持たない場合、jQueryの.on()要素
- 12. 子要素を持たず、COLSPAN属性を持たないTD要素のJsoupセレクタは何でしょうか?
- 13. java.lang.IndexOutOfBoundsException:コレクションにインデックス4の要素が含まれていない
- 14. 正しいタイプの最後の要素を持たないタプル
- 15. Jaxbは、ルート要素を持たない子要素をマーシャリングできますか?
- 16. インデックスと要素に異なるデータ型を持つ配列を作成する
- 17. 特定のクラスを持たない子要素を持つ要素のリストを選択
- 18. インデックスの無効なスタブ要素タイプ
- 19. Guava Joinerがヌル要素のNPEをスローする
- 20. 与えられた列の最も重要な要素を保持するセルのインデックスを返す方法
- 21. MongoDBリスト内の同じインデックスを持つターゲット要素の方法
- 22. 負のZ-インデックスを持つ要素のクリックイベント
- 23. 2つの可能なインデックスを持つセット内の要素を格納する
- 24. 開いた要素を持つAngular2テンプレート
- 25. リンクされたリストの複数の要素を持つインデックスの製品
- 26. 子要素のコンテンツを持たないコンテンツを取得する
- 27. XPath - 特定のIDを持たない子要素を取得
- 28. 2つの相対配置要素を持つz-インデックスIE7
- 29. 背景とZ-インデックスを持つli要素の重複
- 30. 固定親を持つ絶対配置要素のz-インデックス
注_can、_あなたが行う場合は特に、非常に効率的であることを行っていませんこれは複数回です。 –
修正すると、iterableを1回ではなく2回実行します。私は値とインデックスをペアとして与える組み込みのフィルタ関数があるのだろうかと思います。その後、インデックスでフィルタリングすることができます。 –
あなたはStreams.mapWithIndex' 'とストリームとそれをやってのけることができるかもしれないが、あなたはこのようなものが必要な場合は、_really_可変何かを持つ方が良いことになるだろう。 –