« Googleに対する恐い想像(であって欲しい) | メイン | そういえばGmailの中身も違うかもしれない »

Javaのfor文とか Java

久々にJavaについて書いてみようかな
なんて思ってみたりする。
(古い情報が氾濫しすぎててちょっとアレなので)

for文。
まぁ、わかりやすくListで。

昔、

1.
List list = new ArrayList();
for(int i = 0 ; i < list.size() ; i++){
	Item item = (Item) list.get(i);
}

とか

2.
List list = new ArrayList();
for(Iterator i = list.iterator() ; i.hasNext() ;){
	Item item = (Item) i.next();
}

今、
Genericsとか拡張for文とか

3.
List<Item> list = new ArrayList<Item>();
for(Item item : list){
	//TODO
}

とか書ける。
Castとかしなくていいから便利。

さらに拡張for文で書いておくと、
元々、配列だった物をListにしたりSetにしたりしても
for文は書き換えなくていいので
リファクタリングが楽。
(もちろん逆も)

ただ、厳密に言うと、
ArrayListの場合、3よりも

4.
List<Item> list = new ArrayList<Item>();
for(int i = 0 ; i < list.size() ; i++){
	Item item = list.get(i);
}

こっちの方が早い。

LinkedListの場合は3の方が早い。
Iteratorの問題なんだけど、
ArrayListはランダムアクセスが早くって
その代わり、addとかremoveのコストが高い。

LinkedListはaddとかremoveのコストは
ArrayListに比べると低い

で、
Javaやってる人間には当たり前のことを
何でツラツラ書いたかというと、
最近、Rubyの紹介文で
比較対象によくされてるJavaだけど、
繰り返し処理の部分で
よく1を例に出されてる。

で、「拡張for文使えよ!」って
思ったんだけど、どうせならちゅんと纏めておこうと。

いや、個人的にRuby好きだし、
別に文句はないんだけど、
比較するのにわざと冗長に書いたJavaのコードと比較するのは
いかがな物かと思ったので書いてみた。

Rubyがいくら良くっても
そんなコードと比較されちゃうと
Javaよくわかってない人間ならまだしも
普通のJavaエンジニアは
逆に紹介文書いた方を疑っちゃって
損しちゃうんじゃないかなぁと思って・・・

(他にも今時、素のJDBCとStrutsとかと比べられてもねぇ
とか、色々あるんで気が向いたら書いてみる。)

トラックバック

このエントリーのトラックバックURL:

TBスパムを弾く為、言及の無いTBは受け付けていません。

この一覧は、次のエントリーを参照しています: :

» もう一回Javaを援護してみる。<人の尻馬に乗って from Yoshioriの日記
Javaのfor文とか ちょっと今回は引用いっぱいで書きます。 矢野勉のはてな日記 - そろそろRuby... [詳しくはこちら]

コメント

おそらく拡張for文が取り込まれる前に作られたサンプルではないかと。
サンプルを最新の言語仕様に合わせるのを怠った(か、文章そのものが古かった)ということなんでしょうね。

そうなんですよね・・・
古い記事なら別に良いのですが・・・
Ruby on Railsの紹介とかでも
出てきますからね・・・

Ruby on Rails
最初のバージョン 2004年7月
バージョン1.0 2005年12月13日

J2SE 5.0
リリース 2004年9月30日

明らかに怠ってるとしか思えないんですよね・・・

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

人気のエントリー

▼すべて表示
generated by レビュー・ポスター

あわせて読みたい

あわせて読みたい