- PR -

Listの値をまとめる

投稿者投稿内容
JJ
会議室デビュー日: 2004/05/28
投稿数: 10
投稿日時: 2004-08-27 10:36
みなさまアドバイスありがとうございました。
Setを使用する方法にしたいと思います。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-08-27 10:39
佐々木殿に言いたいこと先に言われてしまったので、
自分はListの中を舐めて、同じ奴を削除するコードの例でも…。
コード:
private static Collection removeUnunique(List list) {
   if (list.size() == 0) {
      return list;
   }
   ListIterator iterator = list.listIterator();
   iterator.next();

   while(iterator.hasNext()) {
      if(list.subList(0,iterator.previousIndex()).contains(iterator.next())){
         iterator.remove();
      }
   }
   return list;
}


いかかでしょう?ListがArrayListの場合だと、n^3のオーダーです(笑)
kito
ベテラン
会議室デビュー日: 2003/03/24
投稿数: 59
お住まい・勤務地: Osaka
投稿日時: 2004-09-03 01:58
引用:

Wataさんの書き込み (2004-08-27 10:39) より:
if(list.subList(0,iterator.previousIndex()).contains(iterator.next())){


if(list.subList(0,iterator.previousIndex() + 1).contains(iterator.next())){
ですね。

>最終的には同一文字列を排除したIteratorを作成したいのですけど。。。
これ↑が目的なら
コード:
		for (Iterator it = new LinkedHashSet(list).iterator(); it.hasNext(); ) {
			System.out.println(it.next());
		}



>すでにListに入っている値を変更したいのですが、
これ↑が目的なら
コード:
	private static void removeDuplicateElements(List list) {
		//int iの替わりにIteratorでもほとんど同じ
		for (int i = list.size() - 1; i >= 0; i--) {
			if (list.indexOf(list.get(i)) != i) {
				list.remove(i);
			}
		}
	}



のようなコードも書けました。

スキルアップ/キャリアアップ(JOB@IT)