バックエンド

【Java】SetをListに変換しよう!【おまけ:Setの初期化】

conver-set-to-list

こんばんは!光です。

大手グローバル企業でWebエンジニアをやっています。

Webエンジニアを目指してプログラミングを勉強している初心者の方向けに情報を発信しています。

経歴や実績はこちら

システム開発のお仕事の依頼もお待ちしております。

お問い合わせページTwitterのDMからお気軽にお問い合わせください!

今回はこのような依頼をいただきました。

JavaでSetをListに変換したい!

SetとListは上手に使い分けたいですよね。

そこで今回はこちらについて解説していきます!

Setって何?

イメージとしては重複する値を持たないList型ですね。

IDを変数で持ちたい場合にSetを使うことが多いです。

ListからSetに変換するだけで重複が削除できるのは便利ですね。

例えば、ListとSetに”a”という文字列を2つ追加した場合、

Listのsize()は2, Setのsize()は1

を返します。

Set→Listの変換

SetからListへの変換方法はこちら!

基本的にはListと同じ扱いができます。

// HashSetを使った初期化
Set<Long> hashSetIds = new HashSet<>();

// Listへ変換
List<Long> hashSetListIds = new ArrayList<>(hashSetIds);

List→Setの変換

ついでに逆変換のListからSetへの変換です。

逆になっただけでほとんど同じですね。

// Listの初期化
List<Long> list = new ArrayList<>();

// HashSetを使った初期化
Set<Long> hashSetIds = new HashSet<>(list);

おまけ:Setの初期化

Setの初期化方法はいろいろあるみたいだけど、HashSetを使うのが良さそう。

なんとなく、HashSetが主流な気がしますね。

// HashSetを使った初期化
Set<Long> hashSetIds = new HashSet<>();

// ArraySetを使った初期化(見たことない)
Set<Long> arraySetIds = new ArraySet();

// Set.ofを使った初期化
Set<Long> setOfIds = Set.of();

// Collections.emptySetを使った初期化(こんなのもできそう)
Set<Long> emptySetIds = Collections.emptySet();

まとめ

SetからListへの変換はたったこれだけ!

Listと同じように使えるのでListを使いこなせてる人なら大丈夫ですね。

// HashSetを使った初期化
Set<Long> hashSetIds = new HashSet<>();

// Listへ変換
List<Long> hashSetListIds = new ArrayList<>(hashSetIds);

あとがき

Listに比べて使う機会が少ないだけで難しくはないので覚えておきたいですね。

知っておくといつか役に立つと思います。

SetとListをうまく使い分けましょう!