用arraylist.add()添加元素后,会把前面的元素覆盖

 在写项目的时候发现使用add()会将list之前所有的值覆盖成为最后一个对象的值。写了个例子放着,第一个方法是错误写好,第二个方法可以正确存放。

import java.util.ArrayList;
/*
 * public class Person {
	public String name;
	public int age;
	public void setName(String a)
	{
		name = a;
	}
	public void setAge(int a)
	{
		age = a;
	}
}
 */
public class ArraylistIdontkonw {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person person1=new Person();
		ArrayList <Person> personList=new ArrayList<Person>();
		for(int i=0;i<5;i++)
		{
			person1.setName("name"+i);
			person1.setAge(i);
			personList.add(person1);
		}
		System.out.println("First Method :");
		for(int i=0;i<personList.size();i++)
		{
			System.out.println("name:"+personList.get(i).name+"  age:"+personList.get(i).age);
		}
		personList.clear();
		for(int i=0;i<5;i++)
		{
			Person person2=new Person();
			person2.setName("name"+i);
			person2.setAge(i);
			personList.add(person2);
		}
		System.out.println("Second Method :");
		for(int i=0;i<personList.size();i++)
		{
			System.out.println("name:"+personList.get(i).name+"  age:"+personList.get(i).age);
		}
	}

}

 输出结果:

First Method :
name:name4  age:4
name:name4  age:4
name:name4  age:4
name:name4  age:4
name:name4  age:4
Second Method :
name:name0  age:0
name:name1  age:1
name:name2  age:2
name:name3  age:3
name:name4  age:4

第一种方法存的是person类的引用,当改变person1的值时,之前存的元素都指向同一个对象,在改变person1的值时,list中其他的值也会改变。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用ArrayListadd方法来添加字符串,例如: ArrayList<String> list = new ArrayList<>(); list.add("字符串1"); list.add("字符串2"); list.add("字符串3"); 其中,ArrayList<String>表示创建一个存储字符串类型的ArrayList对象,add方法用于向ArrayList添加元素。 ### 回答2: ArrayListJava中的一种动态数组,可以存储任意类型的数据。在使用ArrayList,我们经常有向其添加字符串的需求。ArrayList提供了一个add方法,可以在指定的位置添加指定的元素。在使用add方法添加字符串,我们需要注意一些细节。 首先,我们需要创建一个ArrayList对象。可以使用如下的代码创建一个空的ArrayList: ``` ArrayList<String> list = new ArrayList<String>(); ``` 这里的`<String>`表示我们要创建一个存储字符串的ArrayList。如果要存储其他类型的数据,可以将`<String>`替换为相应的类型。 接下来,我们可以使用`add`方法向ArrayList添加元素。`add`方法的语法如下: ``` public boolean add(E e) ``` 其中,`E`表示要添加的元素的数据类型。例如,如果要添加一个字符串,应该使用`add`方法的一个重载版本: ``` public boolean add(String e) ``` 例如,我们可以使用如下的代码向ArrayList中添加字符串: ``` list.add("hello"); list.add("world"); ``` 这样就向ArrayList中添加了两个字符串"hello"和"world"。 需要注意的一点是,ArrayList中的元素是按照添加的顺序依次存储的。因此,如果我们想要按照某个规则对字符串进行排序,需要先将其添加到ArrayList中,然后再使用Java提供的排序算法进行排序。例如,可以使用如下的代码对ArrayList中的字符串进行排序: ``` Collections.sort(list); ``` 这个代码使用Java自带的排序算法对ArrayList进行排序。 总之,在使用ArrayList,我们可以使用add方法添加字符串,并且可以使用Java提供的排序算法对其进行排序。希望这些信息对您有所帮助。 ### 回答3: ArrayListJava中的一个数据结构,并且是一个动态数组,允许我们在数组中添加、删除、查找和修改元素。常见的操作之一就是使用ArrayList.add方法向其中添加元素。 如果我们要在ArrayList中添加字符串,可以用ArrayList.add方法来实现。例如,我们有一个名为list的ArrayList对象,并想在其中添加字符串“apple”,可以使用以下代码: ArrayList<String> list = new ArrayList<String>(); list.add("apple"); 这样,我们就可以在ArrayList对象list的末尾添加了一个字符串元素"apple"。 如果我们想要向ArrayList对象中添加多个字符串,可以使用多个add方法。例如: ArrayList<String> list = new ArrayList<String>(); list.add("apple"); list.add("banana"); list.add("orange"); 以上代码将在list对象中添加了三个字符串元素,分别为"apple","banana"和"orange"。 除了添加,我们还可以使用其他ArrayList方法来操作数组中的元素,例如: 1. ArrayList.get(index):获取指定位置的元素; 2. ArrayList.remove(index):删除指定位置的元素; 3. ArrayList.set(index, element):替换指定位置的元素。 总之,通过ArrayList.add方法,我们可以方便地向ArrayList对象中添加字符串,这使得我们的编程更加简单和高效。在实际应用中,可能涉及到对其他数据类型如整型、浮点型的添加,但基本方法的使用方式与添加字符串类似。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值