如何在arraylist中更改数组元素?

时间:2018-04-23 19:26:39

标签: java arrays arraylist

我想知道如何更改arraylist中的数组元素。 这是示例代码。

import java.util.*;

public class question {
    public static void main(String[] args) {


    ArrayList<String[]> arr = new ArrayList<String[]>();
    String[] b = {"red", "green", "blue"};
    String[] c = {"banana", "apple", "orange"};
    String[] d = {"car", "motorcycle", "airplane"};
    String[] s = {"a","b","c"};

    arr.add(b);
    arr.add(c);
    arr.add(d);


    for(int i=0; i<arr.size();i++){
    System.out.println(arr.get(i)[1]);
        if (i==1) {
            arr.set(i, s);
        }
    }
    for (String[] strArr : arr) {
        System.out.println(Arrays.toString(strArr));
    }


}

此代码的结果是

green
apple
motorcycle
[red, green, blue]
[a, b, c]
[car, motorcycle, airplane]

但实际上我只想将“apple”改为“b”, 也就是说,[banana,b,orange]。 所以我这样做了这个代码。

    for(int i=0; i<arr.size();i++){
        System.out.println(arr.get(i)[1]);
        if (i==1) {
            arr.set((i)[1], s);
        }
    }
然而,这个,它会犯错误。

我发现在开发者文档中获取并设置两者都需要int index, Arraylist.get(int index)和Arraylist.set(int index,E element)。

我无法理解为什么get(i)[1]没问题但是设置(i)[1],s是不允许的。 有没有其他语法可以在arraylist中访问一个元素到数组?

1 个答案:

答案 0 :(得分:-1)

尝试以下方法。 arr.set((i)[1], s);不是有效的java。

for(int i=0; i<arr.size();i++){
  System.out.println(tmp);
  if (i==1) { // if ListIndex == 1
    String[] tmp = arr.get(i); // get Array at ListIndex i and store it in tmp
    tmp[1] = s[1]; // set Item at Postion 1 in tmp to Item at Position 1 in Array s;
    arr.set(i, tmp); // set Array at ListIndex i to tmp
  }
}
允许

get(i)[1],因为get(i)返回一个数组,[1]是返回数组的有效索引。在set((i)[1], ...)中,i是一个整数,[1]未在整数上定义。