我想将数组转换为Arraylist。但我不想制作该数组的新副本。我希望Arraylist成为该数组的引用。
例如
var arr[] = {"abc","def","ghi"}
List tempList = new ArrayList();
for(String val:arr){
tempList.add(val)
}
for(Iterator iterator= tempList.listIterator();tempList.hasNext()){
String temp = iterator.next();
if(temp == "def"){
tempList.remove(temp);
}
}
arr = tempList.toArray(tempList.size());
现在这是我真正想要做的一个测试示例。在这里我首先操作列表然后将其转换为数组,然后用列表中的新数组替换“arr”。 但是,如果我从templist中删除一个值,那么它是否可能通过引用从arr中删除?
答案 0 :(得分:4)
如果您不在列表中添加或删除元素,则可以使用Arrays.asList
实现此目的。
使用Arrays.asList(arr)
将为您提供该阵列支持的List。您将能够更改列表中存储的元素(通过调用set(int index, E element)
),并将更改反映在数组中。但是您无法添加或删除元素,因为数组具有固定长度。
/**
* Returns a fixed-size list backed by the specified array. (Changes to
* the returned list "write through" to the array.) This method acts
* as bridge between array-based and collection-based APIs, in
* combination with {@link Collection#toArray}. The returned list is
* serializable and implements {@link RandomAccess}.
*
* <p>This method also provides a convenient way to create a fixed-size
* list initialized to contain several elements:
* <pre>
* List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
* </pre>
*
* @param a the array by which the list will be backed
* @return a list view of the specified array
*/
public static <T> List<T> asList(T... a)
答案 1 :(得分:0)
你可以做的是编写一个从数组中更新ArrayList的方法(这将是参数)。该方法将更新ArrayList,以便它保存传入的数组的值。为了给它一个数组和ArrayList都“同步”的错觉,每次更改原始数据时都必须调用此方法阵列。为了优化方法,我会给它两个参数:数组和ArrayList。因为ArrayList是一个对象,所以不需要从该方法返回它,因为您实际上将在方法中更改对象本身。只需确保在 之前初始化ArrayList 并将其传递给方法(但仅限第一次)。以下是这个想法的快速实现:
private void updateArrayList(String[] arr, ArrayList<String> alist) {
for(int i = 0, n < arr.length; i < n; i++) {
alist.set(i, arr[i]);
}
}
如果我犯了错误,请发表评论,并请我澄清我是否对答案的某些部分不清楚。另外,请告诉我这个答案是否有帮助,或者即使我正确地解释了这个问题。