タグ

javaとListに関するkamatama_41のブックマーク (6)

  • Javaでリスト生成遅延 - コンピュータってすごいらしい

    動機 必要なだけ要素が作られる無限リストを生成したい。 元ネタ Haskellを使う人に有名なフィボナッチ数列の生成方法がある。 fib = 0:1:zipWith (+) fib (tail fib)これで無限に続くフィボナッチ数列ができる。 Haskellのよいところは、遅延評価(lazy evaluation)なので n番目が必要になるまで、n番目が計算されないこと。 これをJavaでやりたい。 方針 (5/9更新) 「必要なだけ」といいながら1個先回りして作っていることに気づいた。 暇があったら改善しよう。 iterator.next()が最初に呼ばれた時に次の要素を生成するようにする。 そこで、リストの次の要素を計算するメソッドnextValueと、次のラッパーオブジェクト生成getInstanceをもつ、Iterableな抽象クラスLazyListを用意する。 iterator

    Javaでリスト生成遅延 - コンピュータってすごいらしい
  • Javaジェネリクス再入門 - プログラマーの脳みそ

    ジェネリクスでは、「型」を変数にした「型変数」というものを取り扱う。型変数で何が嬉しいかというと、メジャーな例ではコレクションAPIが挙げられる。java.util.Listとかjava.util.Mapとかのデータを格納するタイプのユーティリティクラスのことだ。 2004年にJavaのバージョンが5.0となるまでは、Javaにはジェネリクスの機能はなかった。なので、Listにデータを格納し、取得する場合は List list = new ArrayList(); list.add("hello!"); String str = (String) list.get(0); といったソースコードになる。 add()の引数はObject型で宣言されており、どんな参照型でもadd()することができた。 get()の戻り値もObject型で宣言されておりキャストが必要だった。このキャストはプログラ

    Javaジェネリクス再入門 - プログラマーの脳みそ
  • Modern Syntax

    あと番組中では取り上げなかったんですけど、昨日Netflixで「死霊のはらわた ライジング」というのを観たのですが、これがなかなかよいスプラッターホラーでした。血がドバドバ出るのは苦手、という人にはまったくお勧めしませんが、最近のホラー映画はいまいちと思っている人は是非観てみてください(ちなみに私はホラー映画ファンです)。 さて、モダシンラジオのデータをホスティングしてもらっているSpotify for Podcasters(旧Anchor)の私のページはこちらです。 https://podcasters.spotify.com/pod/show/kazuyoshi-nagasawa このSpotify for PodcastersページのRSSは以下になります。こちらのRSSではenclosureタグなどでlength値などがしっかり入っているのでこれを購読しておくとよいかと思います。

    kamatama_41
    kamatama_41 2012/09/08
    なぜゴールドマンサックスw?
  • 配列(List)の要素をランダムに並び替える | WebLog about me.

    List内の要素をランダムに並び替えるJavaのプログラムのサンプルです。 package com.knowd.util; import java.util.ArrayList; import java.util.List; import java.util.Random; /** * * @author yyamazaki@knowd.co.jp * @version 2009/3/1 */ public class RandomArray { public static List randomOrder( List list ) { List tmpList = new ArrayList(); Random random = new Random(); while( list.size() > 0 ) { int r = random.nextInt( list.size() );

  • ArrayListとLinkedListの違い その3 - syttruの日記

    こないだ書いたのが消えてしまったのでもう一度書き直します。 コンカレントなんとかエクセプション Iteratorで回すループの中でListの要素を削除した追加したりすると、コンカレントなんとかエクセプションが飛んでくるので、「Iteratorでループするときは削除しちゃらめぇ」と思いこんでました。 なので、条件を指定してリストから要素を削除するような場合、以下のようなコードを書いてたのです。 // 3で割り切れる数を排除する public void rejectMultipleOf3(List<Integer> list) { // 3で割り切れる要素のインデックスを入れるリスト List<Integer> multipleOf3IndexList = new ArrayList<Integer>(); // 3で割り切れる要素のインデックスを集める for(int i=0; i<list

    ArrayListとLinkedListの違い その3 - syttruの日記
  • Javaでリストと配列を変換、コピーする方法(まとめ) - 地平線に行く

    Javaで、たまにリストと配列を変換したり、コピーしたりするときがあります。 でも意外とやろうとするたびに忘れてしまうので、ざっとまとめてみました。 (解説を分かりやすくするために、ジェネリクスを使用していません) リスト から 配列(変換) public static String[] convert(List<String> list){ return list.toArray(new String[list.size()]); } toArray の引数は、new String[0]でもかまいませんが、 あらかじめサイズが確定している場合は、そのサイズで配列を作っておいた方がわずかながら効率が良くなります。 Listから配列への無駄のない変換 - 地平線に行く リスト から リスト(コピー) public static List<String> copy(List<String> l

    Javaでリストと配列を変換、コピーする方法(まとめ) - 地平線に行く
    kamatama_41
    kamatama_41 2011/06/28
    もっと簡単にできると思ってました
  • 1