访问当前元素和下一个元素 arraylist 而不会越界异常

Access current element and next element arraylist without getting out of bounds exception

所以我有一个 ArrayList,它想要对出现的对进行 HashMap,因此 B,C = 1 在 运行 之后通过下面的 ArrayList1。然后 B,C 在 运行 之后通过 ArrayList2 将是 B,C = 2

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

我正计划使用 HashMap< String, HashMap< String,Integer >> 这样父 hashmap 中的键将是 B 而子键将是 C 所以 [=17= 之后的对 B,C = 1 ] 通过 ArrayList1。 (抱歉,如果我的术语有误,我对每个键的称呼都是错误的)

我的问题是在没有获得 ArrayIndexOutOfBoundsException 的情况下循环遍历 ArrayList 时如何访问当前元素和下一个元素。

你可以用这种方式循环Arraylist,无一例外

for(String myVar : myArrayList){
     //your logic here
}

If 我没看错你要打印号码。成对的顺序如 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);

从而打印地图

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());
            }
        });