gpt4 book ai didi

java - 将列表中的元素映射到另一个列表中的位置

转载 作者:行者123 更新时间:2023-12-02 12:28:16 25 4
gpt4 key购买 nike

假设我们有两个列表,并且想知道一个列表中的元素在另一个列表中的位置。举例说明:

List<String> one = Arrays.asList("B", "I", "G");
List<String> another = Arrays.asList("L", "A", "R", "G", "E");

结果将是:

[-1, -1, 3]

因为 B 和 I 都没有出现在第二个列表中,但 G 出现在第三个位置。

这是我到目前为止所得到的:

<E> List<Integer> indices(List<E> elements, List<E> container) {
List<Integer> indices = new ArrayList<>(elements.size());
for (int i = 0; i < elements.size(); i++) {
indices.add(container.indexOf(indices.get(i)));
}
return indices;
}

是否有更快的解决方案可以避免 List.indexOf() 中的内部循环?

最佳答案

您可以使用 map :

Map<String, Integer> otherMap = new HashMap<>(other.size());
int index = 0;
for(String otherElem : other) {
otherMap.put(otherElem, index++);
}

然后:

for(String oneElem : one) {
Integer index = otherMap.get(oneElem);
indices.add(index == null ? -1 : index);
}

这样做,您可以直接获取索引,而不是每次查找和索引时都在可能非常大的列表上进行迭代。

关于java - 将列表中的元素映射到另一个列表中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835319/

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