gpt4 book ai didi

java - 从集合中获取任意元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:01 25 4
gpt4 key购买 nike

在许多算法中,您应该迭代一组元素,而该集合不为空。

由于您可能会在迭代时更改集合,因此您通常会从集合中拉出一个元素,然后进行迭代,可能会向集合中添加元素或从集合中删除元素。这是执行此操作的典型 Java 代码。

Set<Integer> possibleFactors = Sets.newHashSet(2,3,4,5,6,7,8,100);
while (!possibleFactors.isEmpty()) {
int factor = possibleFactors.iterator().next();
for (int i=1;i<10;i++) possibleFactors.remove(i*factor);
}

编辑:正如评论中所问,我将举一个更好的例子。我正在遍历用户选择的文件,并通过检查每个项目的权限来过滤它们。但是,作为优化,如果用户对某个目录没有权限,我会从集合中删除其中的所有文件。

Set<Path> input = Sets.newHashSet(userSelectedPaths);
while (!input.isEmpty()) {
Path path = input.iterator.next();
input.remove(path);
if (!expensivePermissionCheck(path)) {
input.removeAll(path.getFiles());
} else {
processPath(path);
}
}

但是循环中的第一行看起来很奇怪。它创建了一个多余的 Iterable 对象,当我想要的只是集合中的任意元素时,我不关心顺序。

除了性能,它看起来有点奇怪,而且可读性差。

有更好的选择吗?也许完全不同的结构?

编辑:也许更好的表述是“我如何从集合中弹出任意元素?”

最佳答案

Set的唯一访问方法接口(interface)是通过 iterator() 方法或 toArray() 方法。

如果你有一个 SortedSet您可以使用 first()last() 方法直接访问一个项目。

关于java - 从集合中获取任意元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com