java - ArrayList<ArrayList<String>> 在清除不同的 ArrayList<String> 时被清除

标签 java android arraylist

你好,我有一个全局变量类。该类中的一个函数用于清除我的 ArrayList 之一。唯一的问题是它正在清除我的两个 ArrayLists,我不知道为什么。它应该清除的只是 m_listItems。

清除运行之前: http://i.stack.imgur.com/dN5n4.png

清除运行后:http://i.stack.imgur.com/5eKfj.png

此函数将 ArrayList“m_listItems”添加到双数组列表。

public void addGrouptoList(){
    ArrayList myArray = Global.m_listItems;
    Global.groupCollection.add(myArray);
}

这个函数应该只清除 m_listItems 但它同时清除了两个:

public void ClearNameList(){
    Global.m_listItems.clear();
}

这就是我创建两个 ArrayList 的方式

private static ArrayList<ArrayList<String>> groupCollection= new ArrayList<>(); 
private static ArrayList<String> m_listItems = new ArrayList<String>();

任何帮助将不胜感激。无论是变通还是为什么搞砸了!

编辑 我做了很多谷歌搜索,我认为问题是因为我正在添加(global.m_list_items),所以当我清除 m_list_items 时,它也会在我的其他数组中清除它......是否有解决这个问题的方法?我读到 Static 是导致问题的原因,但我需要它作为我的全局变量。我似乎无法在谷歌中找到解决方法。

谢谢!

最佳答案

数组不包含对象,而是指向对象的指针 制作新数组并将对象添加到第二个数组不会复制对象!修改一个数组中的对象就是在第二个数组中修改它

你需要做

new ArrayList<>(oldArray);

详细了解浅拷贝和深拷贝

在上面的例子中我们使用了拷贝构造函数 另一种方法是使用

http://cs-fundamentals.com/java-programming/java-arrays-clone-shallow-deep-copy.php

How do I copy an object in Java?

Deep copy, shallow copy, clone

顺便说一句:

我喜欢你的风格 :) 完全违反所有规则和惯例 :) 如果你需要帮助随时给我打电话!!!

关于java - ArrayList<ArrayList<String>> 在清除不同的 ArrayList<String> 时被清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38089054/

相关文章:

java - 当我尝试运行我的程序时,GUI 无法加载,我不明白为什么

java.lang.UnsupportedOperationException JavaFX ArrayList<String> 到 ObservableList<StringProperty>

java - xml:元素的值无效

java - 为什么chromedriver浏览器不可见?

android - 黑莓 Android 运行时与 NDK

android - 在 ScrollView 内的不可滚动 GridView 中回收 View

java - 使用 Java 的 SQL 正则表达式

java - 什么是 NullPointerException,我该如何解决?

java - Android 中的文件/图片上传

java - 如何在 Java 中使用 ArrayList