如何更改ItList中的ArrayList元素而不影响原始元素?

use*_*765 6 java android

我有一个ArrayListString,让我们说originalArrayList一些值

 final ArrayList<String> originalArrayList = new ArrayList<>();
            originalArrayList.add("value1");
            originalArrayList.add("value2");
            originalArrayList.add("value3");
            originalArrayList.add("value4");
            originalArrayList.add("value5");
Run Code Online (Sandbox Code Playgroud)

  我originalArrayList在内部类中复制了它并删除了一些元素

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ArrayList<String> tempArrayList = originalArrayList;
                                
                tempArrayList.remove(0); //Remove an element
               
            }
        });
Run Code Online (Sandbox Code Playgroud)

但是,这是影响原来ArrayList这是originalArrayList在我的情况.

我怎样才能防止这种情况发生?

Shr*_*hna 5

据我所知,有两种方法可以解决您的问题,

  • 创建新的ArrayList并添加originalArrayList使用循环的每个元素(不推荐,因为无意识的内存消耗任务)

  • 克隆originalArrayListtempArrayList.

在新的ArrayList中添加每个元素看起来像这样

    ArrayList<String> tempArrayList = new ArrayList<>();
    for (String temp : originalArrayList) {
          tempArrayList.add(temp);
      }
Run Code Online (Sandbox Code Playgroud)

克隆ArrayList我将推荐的这样的外观

ArrayList<String> tempArrayList = (ArrayList<String>) originalArrayList.clone();
Run Code Online (Sandbox Code Playgroud)