1. ホーム
  2. list

[解決済み] Dartのリストで重複を削除するには? list.distinct()?

2022-09-26 19:20:38

質問

セットでごまかさずに、リストから重複を削除するにはどうしたらよいでしょうか?list.distinct()やlist.unique()のようなものがあるのでしょうか?

void main() {
  print("Hello, World!");

  List<String> list = ['abc',"abc",'def'];
  list.forEach((f) => print("this is list $f"));

  Set<String> set = new Set<String>.from(list);
  print("this is #0 ${list[0]}");
  set.forEach((f) => print("set: $f"));

  List<String> l2= new List<String>.from(set);
  l2.forEach((f) => print("This is new $f"));
}

Hello, World!
this is list abc
this is list abc
this is list def
this is #0 abc
set: abc
set: def
This is new abc
This is new def


設定 は、より速い方法であるようです! しかし、それはアイテムの順序を失う:/。

どのように解決するのですか?

というライブラリを持っています。 リアクティブダート というライブラリを持っています。このライブラリには、終端および非終端シーケンスのための、多くの組み合わせ可能な演算子が含まれています。 あなたのシナリオの場合、それは次のようになります。

final newList = [];
Observable
   .fromList(['abc', 'abc', 'def'])
   .distinct()
   .observe((next) => newList.add(next), () => print(newList));

降伏する。

[abc, def]

同じような機能を持つライブラリは他にもあることを付け加えておく。GitHubで調べてみれば、きっと適切なものが見つかるはずです。