rray ist-ArrayList 元素删除问题

问题描述

ArrayList 元素删除问题

初始化:
this.attribute = new ArrayList(Arrays.asList(temp.split(" ")));
this.cat_attr = new ArrayList(Arrays.asList(temp.split(" ")));
发现
cat_attr.remove(s);
时,attribute 里面的s元素也会自动删除,这是为什么啊。

解决方案

这两个持有的是同一个数组的首地址引用,操作的同一个数组。

解决方案二:

恩,两个list中都是Arrays.asList对象,所以操作谁,都会影响另一个
如果每个Arrays.asList也是new出来的,就没事

解决方案三:

你要明白 值类型和引用类型的区别

这个你需要自己学习一下二者的区别,你就明白原因了

解决方案四:

我刚试了一下,没有删除啊?

    public static void test(){
        String str = "a b c d e f g";
        List<String> temp = Arrays.asList(str.split(" "));
        ArrayList<String> alist1 = new ArrayList<String>(temp);
        ArrayList<String> alist2 = new ArrayList<String>(temp);
        alist1.remove("g");
        for(int i=0; i<alist2.size(); i++){
            System.out.println(alist2.get(i));
        }
    }

解决方案五:

看看源码就知道了,new ArrayList的时候会拷贝一份的,所以不会影响

     public ArrayList(Collection<? extends E> c) {
        elementData = c.toArray();
        size = elementData.length;
        // c.toArray might (incorrectly) not return Object[] (see 6260652)
        if (elementData.getClass() != Object[].class)
            elementData = Arrays.copyOf(elementData, size, Object[].class);
    }
时间: 2024-09-20 00:22:41

rray ist-ArrayList 元素删除问题的相关文章

js与jquery获取父元素,删除子元素的两种不同方法

 本篇文章主要是对js与jquery获取父元素,删除子元素的两种不同方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 var obj=document.getElementById("id");得到的是dom对象,对该对象进行操作的时候使用js方法   var obj=$("#id");得到的是jquery对象,对该对象进行操作的时候使用jquery方法   1.对于上面获得的对象进行遍历   (1).js方法  for(vat i=0;j<obj

顺序表应用1:多余元素删除之移位算法

顺序表应用1:多余元素删除之移位算法 Time Limit: 1000MS Memory Limit: 650KB Problem Description 一个长度不超过10000数据的顺序表,可能存在着一些值相同的"多余"数据元素(类型为整型),编写一个程序将"多余"的数据元素从顺序表中删除,使该表由一个"非纯表"(值相同的元素在表中可能有多个)变成一个"纯表"(值相同的元素在表中只保留第一个). 要求:        1.

解析PHP函数array_flip()在重复数组元素删除中的作用_php技巧

我们都知道,PHP中的数组元素删除的方式可以有很多种,经常用到的函数有php中array_unique().那么我们今天为大家介绍的PHP函数array_flip()在删除数组重复元素时的效率要比array_unique()函数高出大约5倍左右.PHP函数array_flip()格式: 复制代码 代码如下: array array_flip ( array trans ) //array_flip -- 交换数组中的键和值 array array_flip ( array trans ) //a

顺序表应用2:多余元素删除之建表算法

顺序表应用2:多余元素删除之建表算法 Time Limit: 3MS Memory Limit: 600KB Problem Description 一个长度不超过10000数据的顺序表,可能存在着一些值相同的"多余"数据元素(类型为整型),编写一个程序将"多余"的数据元素从顺序表中删除,使该表由一个"非纯表"(值相同的元素在表中可能有多个)变成一个"纯表"(值相同的元素在表中只保留第一个). 要求:        1.必须先

数组任意位置插入元素,删除特定元素的实例

如下所示: $ary = array( array('t'=>1,'y'=>2), array('t'=>2,'y'=>9) ); $t = array_splice( $ary, 1,0,array(array('t'=>3,'y'=>10)) ); print_r($ary); 控制台输出: $ary = array( array('t'=>1,'y'=>2), array('t'=>3,'y'=>10), array('t'=>2,'

javascript中数组元素删除问题的讨论

var arr=['a','b','c']; 若要删除其中的'b',有两种方法: 1.delete方法:delete arr[1] 这种方式数组长度不变,此时arr[1]变为undefined了,但是也有好处原来数组的索引也保持不变,此时要遍历数组元素可以才用 for(index in arr) document.write('arr['+index+']='+arr[index]); 这种遍历方式跳过其中undefined的元素 * 该方式IE4.o以后都支持了 2.数组对象splice方法:

Java数组中的元素删除并实现向前移的代码_java

废话不多说了,直接给大家贴代码了. 具体代码如下所示: public class Test { /** * Java怎么删除数组中的一个元素并且向前移 * * @param args * @throws IOException */ public static void main(String[] args) { String[] arrays = { "", "", "", "", "" }; Syste

javascript数组操作(创建、元素删除、数组的拷贝)_基础知识

1.数组的创建 复制代码 代码如下: var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以

JAVA集合框架_相当重要

什么要有集合          面向对象语言对事物的体现都是以对象的形式体现,所以为了方便对多个对象的操作,就是对对象进行存储,集合就是存储对象最常用的一个方式. 数组与集合有什么不用        数组的长度是固定的,而集合的长度是可变的.        数组可以存储基本数据类型,而集合只能存储对象. 集合的特点 集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象. 什么是框架          框架(framework)是一个类的集,它奠定了创建高级功能的基础.框架包含很多超类