のような値を格納することができ、それはOOPの全体のポイントです!
非常に最小限例:
public class Item {
public String ref;
public int size;
public int date;
public Item(String ref, int size, int date) {
this.ref = ref;
this.size = size;
this.date = date;
}
}
そして、それだけでList<Item>
だとあなたはmyList.get(i).ref
などで各パーツにアクセスすることができます:あなた本当にがにMap
を使用したい場合は、
今
List<Item> l = new ArrayList<>();
l.add(new Item("GH987", 22, 1992));
l.add(new Item("98KJ", 27, 2000));
...
for (Item it : l)
System.out.println("Ref: "+item.ref+", size: "+item.size+", date: "+item.date);
各属性を格納するには、という固有キーが何であるか考えなければなりません。さんがString
である、それはref
だとしましょう:
Map<String,Integer> sizes = new LinkedHashMap<>(); // LinkedHashMap keeps the insert order
Map<String,Integer> dates = new LinkedHashMap<>();
sizes.put("GH987", 22);
dates.put("GH987", 1992);
sizes.put("98KJ", 27);
dates.put("98KJ", 2000);
それは、それらが単一のインスタンスにバンドルされていないとして、すべてのメンバーにアクセスすることは困難です。ここ
String ref = "GH987";
System.out.println("Ref: "+ref+", size: "+sizes.get(ref)+", date: "+dates.get(ref))
あなたが、もしMap
を認識すべきです更新されていない場合は、値にnull
が返されますので、一貫性を自分で処理する必要があります。また、単一の属性を格納するために非常に多くのオブジェクトを作成するのは痛みです。ネイティブタイプの代わりにNumber
サブクラス(例:Integer
)があり、はるかに効率的です。
自分の好きなことをして、Item
クラスを作成してください。
myMap.put(ref, new Item(ref, size, date));
Item it = myMap.get(ref);
...
_Iアイテム・クラスを作成することを好むとarray._なぜで3インスタンスを格納しません。そして、あなたはすぐ
ref
メンバーがどのように見えるそのキーに基づいて、特定のアイテムにアクセスするためにMap
を使用することができますない?あなたのスニペットに '-item'とは何ですか?それは鍵ですか?そうであれば、 'Map'が重複キーでどのように動作すると思いますか?それは単に情報の種類のラベルですか? – Saviorこのhttp://beginnersbook.com/java-collections-tutorials/を読んでください。マップのセクションにはさまざまなタイプがリストされています。マップは、基本的にペアのコレクションです。あなたが要素の順序を気にしないなら、HashMapを使うことができます。要素を保存して取得する方法の例があります –
FearlessHyena
アイテムクラスを作成する必要があります。その後、必要に応じてリストまたはマップを使用することができます。 – yogidilip