人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JAVAで、似たような構造が何度も出てきます。具体的には
int[] array={1,2,3,4,5,6,7};
のような配列に対して、ソートや中身の表示をするメソッドを作るときに、
for(int i=0;i<array.length;i++){
....
}
のような構造が各メソッド内にそれぞれ出てきます。ここを一つにまとめたいのですが、一般的にはどのように処理しますか?

●質問者: yshkw
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:Java ソート メソッド 構造 配列
○ 状態 :終了
└ 回答数 : 10/10件

▽最新の回答へ

1 ● itss
●15ポイント

Hi,

java.util.ArrayListオブジェクトをつかうかも。

http://www.atmarkit.co.jp/fjava/javatips/140java030.html

◎質問者からの返答

Hello

利点はイテレータなので、ループを使わないことでしょうか?

細かいことかもしれませんが、数値を比較したいときに

Integer.parseInt((String)array.get(i))<Integer.parseInt((String)array.get(i+1))</p>

のようにもっさりしませんか。勉強がてら、色々なソートの速度を比較する目的でコードを書く過程で、

ループを「まとめたい」と思ったのですが、他に方法はあったらよろしくお願いします。


2 ● y-kawaz
●15ポイント

ソートやダンプなら、Javaの標準ライブラリに Arrays#sort や Arrays#toString が用意されていますよ。

http://java.sun.com/javase/6/docs/api/java/util/Arrays.html


配列に限定せずもう少し汎用的で少し気が効いたことをしたければ commons-lang に便利なクラス・メソッドがたくさんありますよ。

Jakarta Commons のライブラリは欲しいと思った関数が予想通りの名前で用意されていて使いやすいです。特に lang はかなり良く使いますね。

http://commons.apache.org/lang/

◎質問者からの返答

ライブラリを教えていただきありがとうございます。Jakarta Commonsは実用の際は使ってみたいです。

ただ、今回は自分で基礎から勉強したいと思ってのことなので、あえて細かいところから作っています。

書き方が「一般的に」とか、よくなかったですね。


3 ● ken33jp
●15ポイント

ソートのアルゴリズムをいろいろ書いて調べたいけど、

スマートなソースはどういうのが理想かということですね。

『Javaによるアルゴリズム事典』サポートページ

http://oku.edu.mie-u.ac.jp/~okumura/java-algo/

ソースがダウンロードできますのでご利用ください。

そのソースが1つの答えです。

クイックソート、バブルソートとかのってたと思いますよ。

Javaによるアルゴリズム事典

本を買う必要はないと思います。

この本は、C言語アルゴリズム辞典という結構古い本のJava版です。

◎質問者からの返答

もっと特殊です。リンク先のBubbleSort.javaの処理も、ShellSort.javaの処理も

for (int i = h; i < a.length; i++) {

...

}

のループ処理を持っています。このループ自体をメソッド等で共通化する方法を探しています。


4 ● ita
●15ポイント
bool Data::loop(int *i)
{
 (*i)++;
 return (*i == length);
}


int i=0;
while (a.loop(&i))
{
 ...
}

とか?

二行になっちゃいますけど。

◎質問者からの返答

なんだか近づいてきたみたいなんですが、JAVAではなさそう?


5 ● lunlumo
●15ポイント

内容にもよると思いますが,共通化すべきものであれば,処理全体をクラスとして抽出してテンプレートメソッドパターンを適用する,ループの中で行う処理を分けてストラテジパターンを適用するといった辺りが定番でしょうか。

http://itpro.nikkeibp.co.jp/article/COLUMN/20060113/227236/?ST=d...

http://itpro.nikkeibp.co.jp/article/COLUMN/20060113/227233/?ST=d...

◎質問者からの返答

もっとも聞きたいことに近い回答です。

ストラテジパターンですね。概念はなんとなくわかるのですが、

ここにforループを当てはめるとしたら・・・どうなるのでしょう?

たとえ勉強用といっても、forループは最小構成要素だから「共通化すべき」でない、と考えた方がいいのでしょうか?


1-5件表示/10件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ