gpt4 book ai didi

java - 计数元素出现在链表Java中的次数

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

我正在编写一个方法,该方法允许我计算字符串类型的元素在字符串类型的 LinkedList 中出现的次数。我下面显示的代码不起作用。在我下面评论的行中,我一直在获取索引越界。似乎找不到错误

public int findDuplicate (LinkedList<String> e) {
int j = 1;
LinkedList<String> test = e;
while (!test.isEmpty()){
test = e;
String value = test.pop();
//Screws up here when i = 6
for(int i =0; i<=test.size() && test.get(i)!=null; i++){
String value3 = test.get(i);
if(e.get(i).equals(value) && i<=test.size()){
String value2 = test.get(i);
j++;
String Duplicate = e.get(i);
e.remove(i);
}
}
System.out.println(value + " is listed " + j + " times");

}
return j;
}

使用 hashmaps.. 仍然不起作用public void findDuplicate (LinkedList e) {

        Map<String,Integer> counts = new HashMap<String,Integer>();

while(!e.isEmpty()){
String value = e.pop();
for(int i =0; i<e.size(); i++){
counts.put(value, i);
}
}
System.out.println(counts.toString());
}

最佳答案

从你如何使用 test 看来很清楚和 e您希望它们是两个独立的对象。事实上,他们不是。当您执行以下作业时:

    test = e;

两者都是teste最终指向同一个列表。当你改变一个时,它们都会改变。

至于解决问题的好方法,您可能需要使用 Map<String,Integer>计算每个唯一字符串在列表中出现的次数。然后您可以只遍历列表一次,填充 map 。最后, map 将给出最终计数。

关于java - 计数元素出现在链表Java中的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15196624/

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