1
2

More than 3 years have passed since last update.

並びの不明な2つの配列をできるだけすっきりと一致確認する(Java)

Last updated at Posted at 2020-10-02

並びが不明な配列同士の一致確認って結構ある

 DBから取得した配列って、並びが定まらないことが良くあります。
 そんな配列の一致確認をできるだけ少ないコードで表現できないか考えてみました。
 すっきりやりたいんだから、以下のような状況のはず

Stream.sorted() でソートが可能な型であること

 Stringとか、Integerなど、単純な型なら Stream.sorted() でソートできますね。
 ただし、この限りではないです。
 また、Comparator を定義すれば問題ないです。

null が含まれていないことが検証済み

 NullPointerException でます。

一致、不一致のみを得る

 ここは言わずもがな

ソースコード

Sample.java
public boolean isEqualsList(List<?> a, List<?> b){
    return Arrays.equals(a.stream().sorted().toArray(), b.stream().sorted().toArray());
}

おまけ

Comparator を定義した場合でも、ぎりぎりすっきりと言えそうです。

Sample.java
public boolean isEqualsList(Comparator comp, List<?> a, List<?> b){
    return Arrays.equals(a.stream().sorted(comp).toArray(), b.stream().sorted(comp).toArray());
}

あとがき

1文で書けました。
toArray() が Object[] である点はいやらしいですが、一致確認のみなので、問題ないですね。

1
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2