list值循环添加对象值重复的原因和解决方法如下:
record在new之后得到了一块内存地址;
而你的set只是改变了这个对象的值,却不会为该对象重新分配一块内存;
你的recordList.add(record)相当于保存了record对象的引用地址;
所以只要你改变record对象,list中所有元素就都会改变;
解决方法是将HFCZ record = new HFCZ()这一个放在你的循环内,分配多块内存地址就可以了。
list:表, 一览表明细表目录名单。 在计算机领域指序列。在编程语言中List 是类库中的一个类,可以简单视之为双向连结串行,以线性列的方式管理物件集合。list 的特色是在集合的任何位置增加或删除元素都很快,但是不支持随机存取。list 是类库提供的众多容器(container)之一,除此之外还有vector、set、map、?等等。list 以模板方式实现(即泛型),可以处理任意型别的变量,包括使用者自定义的资料型态
在JAVA中,想要把一个list中的内容添加至另一个list中,有两种方法:
采用循环的方法。通过循环第一个ArrayList,然后通过每循环一次的方式,将值赋值给另一个ArrayList。具体代码实现如下:
2.采用ArrayList自带的addAll()方法。addAll()方法是通过传入整一个List,将此List中的所有元素加入到新的List中,也就是当前List会增加的元素个数等于传入的List的大小。该方法较为简单,具体代码实现如下:
拓展资料:
1.List.add() 和 List.addAll() 的区别:
(1)List.add() 方法,也是往List 中增加list,但是,它增加的是一个List 实例。如果,往容器中增加的那个List 实例从数据库中查到的结果有5条,不过,如果使用了List.add(list1)程序只会输出一条记录。原因就是上面说的。List.add() 加List 实例,它会把这个看一个实例,而不是把那个看成一个容器。
(2) 例如:List.add(list1),List.add(list2)List.add(list3), 这时,List.size 它的大小是3。
(3)List.add() 的含义就是:你往这个List 中添加对象,它就把自己当初一个对象,你往这个List中添加容器,它就把自己当成一个容器。
(4)List.addAll()方法,就是规定了,自己的这个List 就是容器,往里面增加的List 实例,增加到里面后,都会被看成对象。
(5) 这时:List.add(list1),List.add(list2)List.add(list3), 这时,List.size 它的大小就是所有list 实例化后的总数和总的记录数。
2.集合是Java API所提供的一系列类,可以用于动态存放多个对象。集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。集合中不能放基本数据类型,但可以放基本数据类型的包装类。 集合类全部支持泛型,是一种数据安全的用法。java列表是集合的一种,并且列表中的元素是有序的,且允许重复。java列表又称为java list。
参考资料:Java List_百度百科
抛开实用性,我们只是简单的去探讨一下这个问题。List<String>指定了添加到List的对象必须为String类型,范型约束的产生在编译阶段,那么我们是否能够绕过编译,在运行阶段添加一个int类型的数据呢,答案是肯定的。
以上。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)