0

我有班级列表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";
4

2 回答 2

5

看起来你会更好地使用 aMap因为它们能够更好地处理键值对,这就是你在这里所拥有的。

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
于 2013-03-05T10:15:39.370 回答
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");
    }
}

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

于 2013-03-05T10:22:28.473 回答