1. ホーム
  2. java

[解決済み] イテレータのカウント/長さ/サイズを取得する最良の方法は何ですか?

2022-10-16 14:50:50

質問

イテレータのカウントを取得するための、計算機的に速い方法はありますか?

int i = 0;
for ( ; some_iterator.hasNext() ; ++i ) some_iterator.next();

... CPUサイクルの無駄遣いのような気がします。

どのように解決するのですか?

イテレータを取得しただけなら、それはそれでいいのですが、このイテレータは を知ることができます。 そのため、その結果を問い合わせることはできません。そのため、その結果を問い合わせることはできません。 と思われる でこれを効率的に行うユーティリティメソッドがあります (たとえば Iterators.size() のような)、しかしその裏では、あなたの例と同じように、イテレータを消費してカウントしているだけなのです。

しかし、多くのイテレータはコレクションから来るので、しばしばそのサイズを問い合わせることができます。また、イテレータを取得するのがユーザーが作成したクラスである場合、そのクラスで size() メソッドを提供することを検討することができます。

要するに、あなたが だけ しかし、多くの場合、基礎となるコレクションまたはオブジェクトにアクセスすることができ、そこから直接サイズを取得することができるかもしれません。