日期:2014-05-20  浏览次数:20613 次

ArrayList用法迷惑
class name1
{
        String s1;
long num;
public int de_fen = 12;
name1(long num, String s1,int de_fen)
{
this.s1 = s1;
this.num = num;
this.de_fen = de_fen;
}
}
import java.util.*;
import java.text.*;
public class name {
public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add(new name1(2,"s2",1));
        }
}
如何才能引用或者改变name1中数值,例如把2变为3···
望大神给予指导。。。。。












ArrayList

------解决方案--------------------
你想通过ArrayList来改变name1的属性值??,那是不可能的,因为List存值都是将name1这个对象copy进去,你可以想像两块堆内存。也就是说你将name1从List中拿出来,操作的是另外一个等值的name1。你用list是无法改变的。
------解决方案--------------------
首先不建议用list的,找特定的值时候建议用map。
你如果找的话只能遍历list
for(Nname1 n:list){
if(n.num==2){
n.num=3;
}
------解决方案--------------------
往ArrayList对象中添加对象,其实是添加了对象的引用,需要的时候可以将引用找出来,通过引用改变指向的对象中的属性。如:

name1 n = (name1)list.get(0);  //得到的对象时Object类型的,需要强制转成name1类型的
n.setName("你想改成的值);


看了你的代码觉得编码不是很规范,比如类名的第一个字母应该大写,这些都是基本的哦