0

私はクラスlistAを持っています:

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 - Adam 2 - John 35 - Arnold 74 - x 54 - x

そして、IndexOf 74 を取得し、名前を x から Catrina に変更したいと考えています。

どうやってするの?

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

2 に答える 2

5

Mapここにあるキーと値のペアを処理するための装備がはるかに優れているため、 a を使用する方が良いようです。

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 に答える