gpt4 book ai didi

java - 访问当前元素和下一个元素数组列表而不会出现越界异常

转载 作者:行者123 更新时间:2023-12-01 11:55:28 24 4
gpt4 key购买 nike

所以我有一个 ArrayList,想要创建一个 HashMap 来存储对的出现次数,以便在运行下面的 ArrayList1 后 B,C = 1。那么 B,C 运行完 ArrayList2 后将是 B,C = 2

ArrayList1 = {A,B,C,D}
ArrayList2 = {D,B,C,A}

我计划使用 HashMap< String, HashMap< String,Integer >> ,这样父 hashmap 中的键将是 B,子键将是 C,因此在运行 ArrayList1 后 B,C = 1 对。 (抱歉,如果我的术语有误,我所说的每个键都是错误的)

我的问题是在循环 ArrayList 时如何访问当前和下一个元素而不出现 ArrayIndexOutOfBoundsException。

最佳答案

如果我没听错,你想打印出号码。成对的顺序如 AB - 1, BC - 2, CD - 1, DB - 1, CA - 1 。因此,对于这种情况,我会提出一个解决方案,例如:

lst = {A,B,C,D}
lst2 = {D,B,C,A}

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

对于ArrayList1

for(int i = 0; i<lst.size()-1; i++) 
// checking whether pair already exists
if(map.containsKey(lst.get(i)+lst.get(i+1)))
map.put(lst.get(i)+lst.get(i+1), map.get(lst.get(i)+lst.get(i+1))+1); // if yes increment the current value by one
else
// else add the new key with value 1
map.put(lst.get(i)+lst.get(i+1), 1);

ArrayList2 类似

for(int i = 0; i<lst2.size()-1; i++) 
// Checking for existing key in same map thus will increment any key matching that of lst keys or any in current lst2
if(map.containsKey(lst2.get(i)+lst2.get(i+1)))
map.put(lst2.get(i)+lst2.get(i+1), map.get(lst2.get(i)+lst2.get(i+1))+1);
else
map.put(lst2.get(i)+lst2.get(i+1), 1);

从而打印 map

Iterator<Entry<String, Integer>> itr = map.entrySet().iterator();
if(itr.hasNext())
itr.forEachRemaining(new Consumer<Entry<String, Integer>>() {
public void accept(Entry<String, Integer> t) {
System.out.println(t.getKey() +" --> " + t.getValue());
}
});

关于java - 访问当前元素和下一个元素数组列表而不会出现越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28483509/

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