获得类的arraylist的索引。 java的

时间:2013-03-05 10:12:57

标签: java arrays class arraylist

我有班级名单A:

public class lista {
            int i;
            String name;

            public lista(int i, String name)
            {
                this.i = i;
                this.name = name;
            }
    }

我从这个类中创建了ArrayList。

 public static ArrayList<lista> friends;

添加一些日期: 14 - 亚当 2 - 约翰 35 - 阿诺德 74 - x 54 - x

我希望获得IndexOf 74并将名称从x更改为Catrina。

怎么做?

friends.get(friends.indexOf(??)) = "catarina";

2 个答案:

答案 0 :(得分:5)

看起来您最好使用Map,因为它们能够更好地处理您在此处拥有的键值对。

Map<Integer, String> friends = new HashMap<Integer, String>();

friends.put(14, "Adam");

friends.get(14); //Adam

friends.put(14, "John");

friends.get(14); //Now John

答案 1 :(得分:0)

这不是它的工作原理。类i中的lista不是列表中的位置索引。

首先,你必须改变你的课程。这不是很好的编码。

public class Friend { 
       //note1: Class Names Start With Capital Letter!
       //note2: Class names have meaning!

        private int i; //notice private modifier. 
        private String name; //notice private modifier.

        public Friend (int i, String name)
        {
            this.i = i;
            this.name = name;
        }
        /* getter and setter methods */
        public int getI() {
            return i;
        }
        public String getName()
            return name;
        }
        public void setName(String name)
            this.name = name;
        }
      /* don't forget equals() and hashCode() */

}

当然,正确的equals()和hashCode()方法对于能够正确使用它们至关重要 - 但网上有很多关于这个主题的材料......

鉴于该类,您必须遍历列表才能找到元素:

for(Friend friend: friends) {
    if(&& friend.getI()==74) {
        friend.setName("Cristina");
    }
}

但是从这里开始,仍然有一些改进。 The approach of cowls方向正确,但我会更进一步,使用Map<Integer, Friend>

//create Map
Map<Intger, Friend> friends = new HashMap<Integer, Friend>();
//note: use interface for declaring variables where possible to hide implementation specifics!

//add friends:
friends.put(75, new Friend(75,"a")); 
//... left ot others for brevity

//modify part:
Friend f = friends.get(75);
if(f!=null) { //always check for null
   f.setName("Christina");
}

与整流罩的方法相比,你还能得到什么?如果你想向Friend课程添加字段 - 你可以自由地做到这一点,而不必费心去处理所有事情......