- PR -

Listでの同一文字列の削除

1
投稿者投稿内容
会議室デビュー日: 2009/02/22
投稿数: 7
投稿日時: 2009-02-22 03:55
ArrayListの中身が
{"ABC","DEF","ABC","GHI"} → {"ABC","DEF","GHI"}
同一の文字列が複数入っていた場合に、中身の順番を入れ替えないで一つにまとめるようにするJavaの標準クラスはありませんか?

HushSetですと、中身は一つにまとまりますが、順番がめちゃくちゃになってしまいます。
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2009-02-22 04:26
やはりHashSetを使いますよ。

アルゴリズム:
空の HashSet<String> s を用意
入力のArrayList<String>をiterateして、
要素がsの中に存在しない場合、その要素をsに足す
存在する場合、この要素をArrayList<String>から削除

これで、計算量 O(N) でできますね。
会議室デビュー日: 2009/02/22
投稿数: 7
投稿日時: 2009-02-22 04:47
スフレ様
回答ありがとうございます。

申し訳ありません、プログラミング初心者で、
入力のArrayList<String>をiterateして、
要素がsの中に存在しない場合、その要素をsに足すという部分の
実行の仕方がいまいち理解できないのですが、どのように行えばいいのでしょうか?


かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2009-02-22 11:16
追加順序を保障するユニークなコレクションは、
java.util.LinkedHashSetです。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-02-22 14:49
ようするに

ArrayListの頭から要素を取得していって
別の入れ物に格納。
別の入れ物の中に今から格納しようとする要素が既に存在していた場合
ArrayListの中にも既に存在している
ということだからその要素は削除する

てことです。

1

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