1

如何找到存储在 ArrayList 中的 int 的索引?

public static void thisClass(int max, int[] queue1, ArrayList<ArrayList<Integer>> aList) {

    int[] anArr = Arrays.copyOf(queue1, queue1.length);
    Arrays.sort(anArr);

    ... //sorts ints into groups (ArrayList of ArrayLists)

    }

    int n = 0;
    for (ArrayList<Integer> t : newList) {
        String itemS = "";
        int total = 0;
        for (int index : t) {
            int value = index; //isn't returning index of arrayList - its returning the value
            if (!itemS.isEmpty()) {
                itemS += ", ";
            }
            itemS += index + ":" + value; //want it to output "element Position : element Value
            total += value;
        }
    }
}
4

3 回答 3

3

您正在使用enhanced for loop,也称为foreach循环。在这个循环中,循环内没有定义索引变量;它只是数组/Iterable 本身中的值。

要获取索引,您必须使用传统for循环:

ArrayList<Integer> myNumbers = new ArrayList<>();
myNumbers.add(123);
myNumbers.add(456);
myNumbers.add(789);

for(int i = 0; i < myNumbers.size(); i++) {
    int value = myNumbers.get(i);
    if(value == 789) {
        System.out.println("Found 789 at index " + i);
        break;
    }
}
于 2012-12-02T13:33:33.573 回答
1

你需要用来indexOf(object)获取索引

假设您使用的大于 java5。否则,您需要创建一个 Integer 对象而不是原始 int。

增强的 for 循环在内部使用迭代器,因此您无法获取索引。

于 2012-12-02T13:29:30.453 回答
1

-使用indexOf()方法来解决这个......

for (ArrayList<Integer> t : newList){

      int index = newList.indexOf(t);

      System.out.println(index);      // Use an array or list to store these 
                                      // index if you want.


}
于 2012-12-02T13:37:15.610 回答