如何使 Dart 中的数组(列表)元素唯一?

geo*_*ler 5 arrays element list unique dart

我需要从列表中删除冗余(字符串)元素。或者,也许首先阻止它们被输入是更好的解决方案?集合不允许重复,但它们也不保持顺序,我需要顺序。这对我来说是一个常见问题,所以我正在寻找一种可能的语言解决方案以提高效率。

(过去我扩展了一个数组类来添加我自己的 add_unique() 方法,但这似乎是一个足够常见的问题,可以由语言处理并且可能更有效。)

谢谢,

_G

Sil*_*der 14

使用toset然后toList

 var ids = [1, 4, 4, 4, 5, 6, 6];
 var distinctIds = ids.toSet().toList();
Run Code Online (Sandbox Code Playgroud)


mda*_*kin 2

您需要一个 LinkedSet 来仅包含唯一值并保持插入顺序,但目前我们在 dart 中没有它。但是,您可以使用 LinkedHashMap 模拟 LinkedSet:

var input = ["apple", "orange", "cherries", "pears", "apple", "apple", "orange"];
var uniques = new LinkedHashMap<String, bool>();
for (var s in input) {
  uniques[s] = true;
}
for (var key in uniques.getKeys()) {
  print ("$key");
}
Run Code Online (Sandbox Code Playgroud)

  • 现在 dart 中有一个 LinkedHashSet 实现。 (2认同)