1

いくつかの検索を行いましたが、有効な解決策を見つけることができませんでした。ガム、靴下、OJ、ドッグフードなどの文字列を格納する配列リストがあります...

リストを反復して、さまざまな種類のアイテムの総数を決定するのに問題があります。

すなわち。

ArrayList<String> Store = new ArrayList<String>();
    this.Store.add("Gum");
    this.Store.add("Gum");
    this.Store.add("Socks");
    this.Store.add("Candy");

リストには合計 4 つのアイテムがありますが、アイテムの種類は 3 つだけです (ガム、サックス、キャンディー)。

3 を計算する方法をどのように設計しますか?

4

4 に答える 4

10

Bhesh Gurungが言ったこと、しかしコードでは:

int numUnique = new HashSet<String>(Store).size();

あなたが実際に持っているものがStoreItemsあり、通過する必要がある場合getName()、私はします

Set<String> itemNames = new HashSet<String>();
for (StoreItem item : Store)
    itemNames.add(item.getName());
int numUnique = itemNames.size();
于 2012-08-23T05:11:20.837 に答える
5

あなたが探しているものをあなたに与えるサイズのSet( )を使用してください。HashSet

于 2012-08-23T05:10:22.553 に答える
1

これは宿題のように見えます... したがって、上記で提案された HashSet ソリューション (または HashMap で同じことを行う) を理解していない場合は、次のようなことを考えてみてください。

新しいArrayListを作成します

要素を取得し、それが新しい ArrayList に存在するかどうかを確認します

新しい ArrayList に存在する場合は、何もしません。それ以外の場合は追加します。

ArrayList の最後の要素を調べるまで、これを行います。

次に、新しい配列リストのサイズは、探している数になるはずです。

于 2012-08-23T05:16:04.280 に答える
0

lastIndexOfメソッドを使用して、arraylist をループできます。

char count=0;

    for(char i=0; i<araylist.size(); i++){
        if(i == araylist.lastIndexOf(araylist.get(i))){
            count++;
        }
    }

テスト済み。

于 2013-02-12T21:55:35.347 に答える