作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何更新索引处的值 0
Set<int> set = {1, 2, 3};
set[0] = 0; // error
Set
至
List
,添加元素并进一步将其转换回
Set
最佳答案
集合元素仅附带索引,因为它们是可迭代的。您不能“更新位置 x 处的值”,因为任何更新都可能更改顺序。
我假设您确实希望保留迭代顺序(在这种情况下,您确实应该使用列表!),因此以下内容不起作用:
void update<T>(Set<T> elements, int index, T newValue) {
set.remove(set.elementAt(index));
set.add(newValue);
}
void replace<T>(Set<T> set, int index, T newValue) {
if (set.contains(newValue)) throw StateError("New value already in set");
int counter = 0;
while (counter < set.length) {
var element = set.first;
set.remove(element);
if (counter == index) element = newValue;
set.add(element);
}
}
index
第 th 个元素,它插入的位置
newValue
反而。
LinkedHashSet
)。
newValue
已经在集合中,这将不起作用,所以在这种情况下我让它抛出)。
(set.toList()..[index] = newValue).toSet()
更好的解决方案.
关于Dart:如何更新 Set 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58376687/
我是一名优秀的程序员,十分优秀!