2017-06-25 10 views
-3

私はJavaの初心者ですので、これは非常に基本的な質問かもしれませんが、私はどこでも答えを見つけることができませんでした。配列リスト(Java)内の各オブジェクトの数を数えるにはどうすればよいですか?

配列リスト内の各オブジェクトの量をどのように数えますか?コード内で項目の名前が付けられていないのはどうですか?

私は2つのクラスを持っています.1つは自動販売機をシミュレートし、もう1つはスナックを表します。スナッククラスのコンストラクタは、ように、文字列型としてスナックタイプを開始する:

public TypeOfSnack(String SnkType) 

そして自動販売機のクラスでは、これらは、ArrayListの上に加えることができます。このためのフィールドは次のとおりです。

private ArrayList<TypeOfSnack> snacks; 

は、私が)(snacks.sizeを行うことにより、配列リスト中のスナックの数を取得するために知っています。しかし、どのように各タイプの金額を返すのですか?これまでのところ私はやったことがあります:

public int countSnacks(String SnkType) 
    { 
     return packets.size(); 
    } 

これは、私が方法で渡されたものではなく、合計量を与えられたものです。

おかげ

+2

あなたが他のprogamming言語でそれを行うだろうか?あなたが文字通り軽食の箱を持っていて、火星の数を数えるように求められたらどうしますか? –

+0

あなたはそれぞれの型から軽食の数を返すが、あなたの関数はintを返すと言う。たぶん、スナックを取得し、それがマシン内にどれくらいあるかをチェックする関数から始めることができます。 GL – Yonlif

答えて

0

は限り私は理解して、あなたはArrayListの中で、各スナックの数を格納します。
ArrayListはこの問題には適していません.HashMapを使用する必要があります。たぶん

次のコードのようなもの:

HashMap<String, Integer> snacks = new HashMap<String, Integer>(); 
snacks.put("Chips", 5); 
snacks.put("Fried", 2); 

スナックの数を取得するには、次の

int numberOfChips = snacks.get("Chips"); 

それともあなたはそれをあなたの方法をしたい場合は:

public int getNumberOf(String snackType) { 
    int value = 0; 
    for(TypeOfSnack s : snacks) { 
     if(s.getType().equals(snackType)) { 
      value++; 
     } 
    } 
} 
0

ます実際のリストを一意のアイテムリストに変換することができます。その後、Collections.frequencyというメソッドを使用して、同じ要素リストに表示されます。

例:

public static void main(String[] args) { 
    List<Integer> numbers = new ArrayList<>(); 
    numbers.add(5); 
    numbers.add(5); 
    numbers.add(5); 
    numbers.add(3); 
    numbers.add(5); 
    numbers.add(5); 
    numbers.add(2); 
    numbers.add(5); 

    Map<Integer, Integer> result = new HashMap<>(); 

    for(Integer unique : new HashSet<>(numbers)) { 
     result.put(unique, Collections.frequency(numbers, unique)); 
    } 

    System.out.println(result); 
} 

出力:

{2 = 1、3 = 1、5 = 6}

関連する問題