这不是它的工作方式。您的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");
}
}
但从这里开始,仍有一些改进要做。整流罩的方法是正确的方向,但我会更进一步,通过使用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
类中添加字段 - 您可以自由地这样做,而不必处理转换所有内容......