タグ

Javaとiteratorに関するyogasaのブックマーク (3)

  • iteratorや拡張forよりStreamのforEachが速い? - きしだのHatena

    ちょっと気になったので、簡単にベンチマークしてみました。 最初は、ラムダ呼び出しが入る分forEachは遅いんじゃないかと思っていたら、倍の速さに。 もちろん、いろんな条件で変わるんだろうけど、ここまで差が出ることがあるのは驚き。 あと、Collectors.summingIntのような基型に対するCollectorを使うよりは、intStreamに変換してからsumなど専用メソッドを使うほうが圧倒的に速いことも確認できた。 とりあえず、0から10万件のListを用意。 array = IntStream.range(0, 100_000).boxed().collect(Collectors.toList()); それからベンチマーク用のメソッドを用意。 public static void bench(String name, Supplier<Integer> proc){ ben

    iteratorや拡張forよりStreamのforEachが速い? - きしだのHatena
  • ふたつのIterator - プログラマーの脳みそ

    コードを書いているとたまにふたつのIteratorをいっしょに回すコードを書くはめになる。 /** ふたつのItaratorを並べて回すサンプル */ static boolean compare1(List<String> list1, List<Integer> list2) { if (list1.size() != list2.size()) { throw new IllegalArgumentException("個数の不一致"); } Iterator<String> ite1 = list1.iterator(); Iterator<Integer> ite2 = list2.iterator(); // 敢えてショートサーキットしない&演算を用いる while (ite1.hasNext() & ite2.hasNext()) { String v1 = ite1.nex

    ふたつのIterator - プログラマーの脳みそ
  • 日常ドリル・pythonのrange関数をJavaでやってみる - 矢野勉のはてな日記

    Java, ドリル 最近はなんだかPython(ぱいそん)使いがモテらしいので、いつも算数ドリルみたいに書いてるちまっとしたお遊びコードでやってみた(実用性とかは無視)。おっぱいマニア*1への道。 rangeという関数は、こんな感じで使います。 for i in range(2,10): print i 上記の例だと、2をスタート値として、1ずつインクリメントして10になるまで、つまり2,3,4,5,6,7,8,9って感じに i 変数に値が格納されます(10になったら終わりで10は含まない)。難しく言うと「startからstop-1まで、stepずつ加算したリストを返す」ということらしいです。 for i in range(2, 10, 2): print i このようにrangeに三つ目の引数を渡すと、次の数字までのstepを指定できます。この場合は2,4,6,8になります。 pytho

  • 1