文档章节

ArrayList.add后,前面数据被覆盖的问题

snail-
 snail-
发布于 2015/10/21 21:00
字数 220
阅读 2087
收藏 2

1. 代码示例:

public class ListTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        List<User> list =new ArrayList<User>();
        User user=new User();
        user.setName("jack");
        user.setPassword("111");
        list.add(user);
        user.setName("JAY");
        user.setPassword("222");
        list.add(user);
        
        User user1=new User();
        user1.setName("jim");
        user1.setPassword("333");
        list.add(user1);
        
        for(Iterator<User> i = list.iterator();i.hasNext(); ){
        	User str = (User) i.next();
        	System.out.println(str.getName()+"   "+str.getPassword());
        	}
	}
}


User类:
public class User {
	
	private String name;
	private String password;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

}

2. 控制台打印信息:

JAY   222
JAY   222
jim   333

3.  解析:add加进去的是对象的一个引用,使用同一个对象时,每次都更新了这个引用的值,所以list里面的值都一样的。如果使用for等循环时,注意把User user=new User()放到循环里面,每次都生成一个新的对象,更改自身不会对其他元素有影响。

© 著作权归作者所有

共有 人打赏支持
snail-
粉丝 3
博文 45
码字总数 26533
作品 0
杭州
程序员
私信 提问
加载中

评论(2)

snail-
snail-

引用来自“communicated”的评论

与List无关,与User相连。
是的,因为前两个引用的是同一个user!
10书生
10书生
与List无关,与User相连。
listview 滑动更改标题

package com.example.listviewtest; import java.util.ArrayList; import java.util.HashMap; import java.util.Set; import org.w3c.dom.Text; import android.support.v7.app.ActionBarAct......

胡欢哥哥
2015/10/18
96
0
ArrayList线程不安全分析

之前一直听说ArrayList线程不安全的说法,百度了一下不安全的分析和列子,感觉都不太满意,最后边实在不行只好自己分析了。 1、多线程插入测试 代码实例ArrayListTestDemo1.java: package ...

守望者-圣堂刺客
2016/04/24
318
2
C#中的数组类型[],List,Array,ArrayList的区别

using System; using System.Collections; using System.Collections.Generic; namespace SampleList { class CompareArray { public static void CompareContainer() { //[] 的命名空间 Sy......

酷酷小乔
2018/06/26
0
0
设计模式之C#实现---- ProtoType

作者: cuike519的专栏 http://blog.csdn.net/cuike519/ 该模式的意图是:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。那么首先我们应该已经有了一个对象,同时这个对...

晨曦之光
2012/03/09
59
0
Collection 和 Map 遍历过程的区别

1:Collection 和 Map 都是Java体系为我们提供的强大集合工具,他们的遍历是最多的操作,那么他们有什么不同呢?请看如下代码 import java.util.ArrayList;import java.util.Collection;imp...

刘付kin
2016/12/07
4
0

没有更多内容

加载失败,请刷新页面

加载更多

《傲慢与偏见》的读书笔记与读后感作文2400字

《傲慢与偏见》的读书笔记与读后感作文2400字: 作者:孙苑馨;笔者按:读书这个习惯是我爸妈养出来的。小时候父母赚的钱除了吃饭穿衣剩下的就是买书了,他们除了买各种新鲜出版的文艺派图书...

原创小博客
22分钟前
1
0
oozie job 的挂了监控报警或重启

oozie Coordinator 的job 和actioni状态很多,但好像不支持设置某状态如failed后30分钟后自动重新拉启,因他的条件只有几种:触发条件可以是一个时间频率、一个dataset实例是否可用,或者可能...

hblt-j
41分钟前
1
0
python精简笔记-[6]-[if,for,while]语句

1.if 条件判断 语法: if 判断条件: 执行语句……elif 判断条件:    执行语句……elif 判断条件:    执行语句……else: 执行语句…… 实例1: n = input("请输...

平头哥-Enjoystudy
44分钟前
0
0
RxJava 是如何实现线程切换的(上)

前言 通过前一篇的从观察者模式出发,聊聊RxJava,我们大致理解了RxJava的实现原理,在RxJava中可以非常方便的实现不同线程间的切换。subscribeOn 用于指定上游线程,observeOn 用于指定下游线...

亭子happy
今天
2
0
想晋级高级工程师只知道表面是不够的!Git内部原理介绍

本文由云+社区发表 作者:腾讯工蜂用户:王二卫 从不一样的视角了解git,以便更好的使用git 一、git & git 版本库认识 git 是一个内容寻址的文件系统,其核心部分是一个简单的键值对数据库(...

腾讯云加社区
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部