- - PR -
配列の重複要素を取り除く方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-09-26 13:52
配列を重複要素を取り除く方法がわかりません.
たとえばすべて数字の要素{1,-1,2,0,2,1,3,0,1,5}という配列があったとして これを0以下の数と重複する要素を取り除いた要素{1,2,3,5}にしたいのですが よくわかりません.最小の数字を固定して比較していくのかと思っていたのですが できません.初心者なもので,どなたかアドバイスをいただけるとありがたいです. | ||||
|
投稿日時: 2004-09-26 14:11
hakotaroさん、こんにちわ
配列の代わりに java.util.Set (たとえば、java.util.HashSet)を 使用してはどうでしょうか。 intや doubleのようなプリミティブな型は Integer, Doubleクラス のオブジェクトにすれば格納できます。 | ||||
|
投稿日時: 2004-09-26 14:43
返答ありがとうございます. {1,2,3,5}にした後,この配列を使って計算したいので 何とか配列でできるいい方法は無いものでしょうか? 便利なツールがあるとのことですがオブジェクトではなく この操作をひとつのメソッドとして 作りたいんです.何かいい方法は無いでしょうか? | ||||
|
投稿日時: 2004-09-26 15:52
hakotaroさんが欲しい物かどうかわかりませんが、
次のようなメソッドを呼び出せばどうでしょう。
配列のまま処理するより面倒に見えますが、 後々いいことがあるでしょう。 なお、この例ではソートするために TreeSet を使用して いますが、ソートする必要が無い場合は HashSetの方が 処理が速いかも知れません。 | ||||
|
投稿日時: 2004-09-26 17:12
使い方はわかりました.
ですが,{1,2,1,-1,0,1,3,5}を抜き出した順に 並べたいのですが,どうすればよいでしょうか? 要は{1,2,3,5}を for(i=0;, i < data.length; i++){ out.println("data[" + i +"] = " + data[i]); } として data[0] = 1 data[1] = 2 data[2] = 3 data[3] = 5 のようにして表示したいのですが. | ||||
|
投稿日時: 2004-09-26 17:37
抜き出した順でしたか、失礼いたしました。
Setの代わりにリスト使ってみました。
説明の必要は無いかもしれませんが、原理はつぎのとおりです。 ・可変長の配列 ArrayListを作る。 ・元データが、0以下でないとき、 ・ArrayListに格納できるように、データを Integerでラップする。 ・可変配列の中に同じ値が無ければ、 ・データを追加する。 ・確定したデータ数分の int配列を生成し、 ・1つずつ Integerのラップを外して int配列に格納 | ||||
|
投稿日時: 2004-09-27 14:05
こんにちは、さくらばです。
LinkedHashSet を使えばいいのではないでしょうか。 これだと抜き出し順に取り出せますが。 | ||||
|
投稿日時: 2004-09-28 00:40
さくらばさん、こんにちは。
そうでした。忘れてました。 |
1