dポイントプレゼントキャンペーン実施中!

初心者ですが、どうぞ宜しくお願いいたします。

ご指南願いたいのは、ArrayListに格納されているデータの中から、
一意のデータのみ別のArrayListに入れていきたいのです。

ArrayList1  →  ArrayList2

100点        100点
80点          80点 
80点          90点
80点          70点 
100点
100点
90点
70点
90点
90点

上記のように重複したデータは切り捨てたいのですがよい方法はないでしょうか?

宜しくお願いいたします!

A 回答 (3件)

あまり実行効率は良くないですが、一度Setにコピーするのが手っ取り早いかと。



例) ------------------------------------
List<String> source = new ArrayList<String>();
source.add("100点");
source.add("80点");
source.add("80点");
source.add("80点");
source.add("100点");
source.add("100点");
source.add("90点");
source.add("70点");
source.add("90点");
source.add("90点");

List<String> result =
new ArrayList<String>(new HashSet<String>(source));
----------------------------------------

順番を保持したいなら LinkedHashSet を使えば良いです。
http://java.sun.com/javase/ja/6/docs/ja/api/java …

参考URL:http://java.sun.com/javase/ja/6/docs/ja/api/java …
    • good
    • 0
この回答へのお礼

ありがとうございます。
大変参考になりました。
himajin100000さん、alice_asahinaさん同様に思った通りになりました。
初心者の私には一番わかりやすく、
取り組みやすかったのでベスタアンサーとさせてもらいました。
またわからないときは宜しくお願いします。

お礼日時:2012/01/10 14:55

前述の2つはデータの要領によって OutOfMemory 発生しやすいよそれ。




基本はこの形で判定するほうが早いし無駄なメモリもくわない。


public static <T> List<T> unique(List<T> arg0) {
 List<T> ret = new ArrayList<T>();
 for (int i = 0; i < arg0.size(); i++) {
  T x = arg0.get(i);
  if (!ret.contains(x)) {
   ret.add(x);
  }
 }
 return ret;
}
    • good
    • 0
この回答へのお礼

ありがとうございます。
大変良い勉強材料になりました。
わたしにはまだ高度に感じますが、
こんなに無駄なくコードは記述できるんですね。
驚きました!
本当にありがとうございました。

お礼日時:2012/01/10 14:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!