gpt4 book ai didi

java - 将 LinkedHashSet 转换为 ArrayList 或仅使用 ArrayList

转载 作者:行者123 更新时间:2023-11-29 07:25:26 25 4
gpt4 key购买 nike

考虑以下代码:

final Set<String> allPaths = new HashSet<String>();
for (final String path: paths) {
allPaths.add(path);
}
final MyData d = new MyData(new ArrayList<String>(allPaths));

MyData 是一些我不应该接触的类。它应该得到一个 ArrayList 作为参数。在这一天之前,我们使用那种方式是因为我们不关心顺序,这就是我们使用 Set 的原因(所以不会重复)。但是现在,我想保持元素的顺序,所以经过一番研究,我发现我可以使用数据结构 LinkedHashSet 来做到这一点。所以我做了:

final LinkedHashSet<String> allPaths = new LinkedHashSet<String>();
for (final String path: paths) {
allPaths .add(path);
}
final MyData d = new MyData(new ArrayList<String>(allPaths));

问题是,我不确定如何将 LinkedHashSet 转换为 ArrayList。另外,我考虑过使用 ArrayList 而不是 LinkedHashSet 所以我不必转换它,但我必须遍历数组 (O( n)).

我应该使用什么好、干净和有效的方法?

最佳答案

只需使用 public boolean addAll(Collection<? extends E> c)方法,在 arrayList 上,它接受任何 Collection .

你有你的 LinkedHashSet :

final LinkedHashSet<String> allPaths = new LinkedHashSet<String>();
for (final String path: paths) {
allPaths .add(path);
}

然后执行(即使 mylist 不为空也可以使用它):

List<String> myList = new ArrayList<>();
mylist.addAll(allPaths);

或者更简单的方法:

List<String> myList = new ArrayList<>(allPaths);

关于java - 将 LinkedHashSet 转换为 ArrayList 或仅使用 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53979792/

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