1

JavaでLINQのシングルに相当するものはありますか?おそらくlambdajで?

4

4 に答える 4

8

正直に言うと、自分で実装するのは非常に簡単です。

public static <T> T single(Iterable<T> source) {
  Iterator<T> iterator = source.iterator();
  if (!iterator.hasNext()) {
    throw new IllegalArgumentException("No elements");
  }
  T first = iterator.next();
  if (iterator.hasNext()) {
    throw new IllegalArgumentException("More than one element");
  }
  return first;
}

(または、メソッドをジェネリックにする代わりに、ジェネリッククラスに入れます。別の例外タイプを使用することもできます。)

于 2010-11-26T17:18:46.087 に答える
3

Guavaの使用:

Iterables.getOnlyElement(Iterable <T> iterable)

于 2010-11-26T17:30:27.907 に答える
0

@Jonのソリューションの防御力の低いバージョン。

Collection<T> coll;
T first = col.iterator().next();

味にチェックを追加します。

于 2010-11-26T17:25:47.960 に答える
-1

私のxpressoライブラリを使用できる場合は、次のように記述できます。x.list(iterable).toScalar();

于 2015-06-11T01:28:47.640 に答える