Java 如何流畅地比较ArrayList元素?
我想问一下,我如何比较两个列表,并获得第二个列表中包含第一个列表元素的信息输出 示例: 第一名:a、c、b 第二名单:CBA 产出:3 1 2 我试过:Java 如何流畅地比较ArrayList元素?,java,arraylist,Java,Arraylist,我想问一下,我如何比较两个列表,并获得第二个列表中包含第一个列表元素的信息输出 示例: 第一名:a、c、b 第二名单:CBA 产出:3 1 2 我试过: for(int i = 0 ; i < firstList.size() ; i++) { System.out.println(secondList.indexOf(firstList.get(i))); } for(int i=0;i
for(int i = 0 ; i < firstList.size() ; i++)
{
System.out.println(secondList.indexOf(firstList.get(i)));
}
for(int i=0;i
但是对于很多数据来说速度太慢了。我试过两个for循环,但比这个慢。你还有别的想法吗?我想解决这个问题 对于“大量数据”,无论是一个用于
循环调用indexOf
还是两个用于
循环,都会很慢。每个for
循环都贡献了O(n),甚至indexOf
都是伪装的循环。这些是O(n2)算法
假设列表中的所有元素都是唯一的,您可以在其中一个列表中运行一次,将所需的数字放置在HashMap
中,该HashMap具有O(1)个查找时间
然后,您只需要为循环使用一个,而不是查阅HashMap
Map<String, Integer> map = new HashMap<>();
for(int i = 0; i < secondList.size(); i++)
{
map.put(secondList.get(i), i + 1);
}
for(int i = 0 ; i < firstList.size() ; i++)
{
System.out.println(map.get(firstList.get(i)));
}
Map Map=newhashmap();
对于(int i=0;i
这是O(n),对于“大量数据”性能更好