2016-09-18 33 views
0

私は、指定されたArrayListから文字列のすべての繰り返しを取得しようとしています。ただし、出力は以下の通りです文字列の繰り返し

public static void howmany (ArrayList <String> list) 
{ 
    for (int i=0; i<list.size();i++) 
    { 
     System.out.println(list.get(i)+ ": " + Collections.frequency(list, list.get(i))); 
    } 
} 

申し訳ありません:4バット:1申し訳ありません:4申し訳ありません:4申し訳ありません:4電車:2列車:私は、次のコードを使用することによって、これを達成しました2テディベア:2 テディベア:2ボール:2ボール:2

ランナークラスのコードがある:

ArrayList<String> toys = new ArrayList <String>(); 

String[] toys1 = {"sorry", "bat", "sorry", "sorry", "sorry", "train", "train", "teddy", "teddy", "ball", "ball"}; 

for (int i=0; i<toys1.length;i++) 
{ 
    toys.add(toys1[i]); 
} 

Toys.howmany(toys); 

出力が単語を繰り返さない方法はありますか?例えば 、それだけで言うこと:申し訳ありません

:4、バット:1、電車:2、テディ:2、ボール:2

私は初心者ですし、私はまだしようとしていますJavaロジックを学ぶ!

答えて

3

すでに印刷した値を保存し、値を印刷するたびに確認して重複をなくすことができます。あなたがこれを行うことができますたとえば

public static void howmany (ArrayList <String> list) 
{ 
    Set<String> processed = new HashSet<>(); 
    for (int i=0; i<list.size();i++) 
    { 
     if(!processed.contains(list.get(i))) { 
      System.out.println(list.get(i) + ": " + Collections.frequency(list, list.get(i))); 
      processed.add(list.get(i)); 
     } 
    } 
} 
0

私はあなたに2つの簡単な方法を教えてくれます。

セットを使用して重複をチェックできます。ハッシュセットを作成し、それにlist.get(i)を追加すると、if条件の戻り値が使用されます。ハッシュセットのaddメソッドは、まだセットに追加されていない場合にのみtrueに戻り、そうでない場合はfalseを返します。

また、リストからハッシュセットを作成し、ハッシュセットを反復して重複を排除することもできます。

ハッピープログラミング!

0

ちょうどここでは、この

String[] toys1 = {"sorry", "bat", "sorry", "sorry", "sorry", "train", "train", "teddy", "teddy", "ball", "ball"}; 
Map<String,Integer> toyMap = new HashMap<String,Integer>(); 
for(String str:toys1){ 
    if(toyMap.containsKey(str)){ 
     toyMap.put(str, toyMap.get(str)+1); 
    }else{ 
     toyMap.put(str, 1); 
    } 
} 
for (Map.Entry<String, Integer> entry : toyMap.entrySet()) { 
    System.out.println(entry.getKey()+" : "+entry.getValue()); 
} 
0

のようなハッシュマップを使用してO(n)のソリューションで、ハッシュマップを使用します。

public static void howmany (List <String> list) 
    { 
     Map<String,Integer> counts = new HashMap<>(); 

     for (String item:list) 
     { 
      counts.put(item, counts.getOrDefault(item,0)+1);   

     } 
    System.out.println(counts); 
    } 



    public static void main(String []args){ 

    String[] toys1 = {"sorry", "bat", "sorry", "sorry", "sorry", "train", "train", "teddy", "teddy", "ball", "ball"}; 


    howmany(Arrays.<String>asList(toys1)); 
    } 
1

使用この目的のためにHashMap。最初に、ArrayList全体をトラバースし、それらの文字列をキーとして追加し、新しい文字列を見つけたり、対応するキーの値を増やしたりすると、その値を1とします。

if(myMap.contains("foo")) 
    myMap.put("foo",myMap.get("foo")++); 
else 
    myMap.put("foo",1); 

これが役に立ちそうですか?

関連する問題