From: Robert Klemme Date: 2007-09-16T20:35:04+09:00 Subject: Re: Search for duplicate elements in the array On 16.09.2007 13:04, Ruhe wrote: > Hello. > I have a pretty good working Java method, which sorts array of > strings, then searches for duplicate elements. If element is > duplicated output shows ">> hello *20 times" for example. > > private void printArray() > > { > > String arr[] = str.split("\\n+"); > > > > Arrays.sort(arr); > > > > for (int j = 0; j < arr.length; j++) > > { > > int count = 1; > > for (int i = j + 1; i < arr.length; i++) > > { > > if (arr[i].compareTo(arr[j]) == 0) > > { > > count++; > > j++; > > } > > } > > if (count > 1) > > { > > System.out.println(">> " + arr[j] + " *" + count + " times"); > > } else > > { > > System.out.println(">> " + arr[j]); > > } > > } > > } > > > But the problem is that I can't write this method in Ruby! How to make > this in Ruby? This is way inefficient. You rather want a counter per element stored in a Map (HashMap or TreeMap in Java). dups = Hash.new 0 arr.each {|x| dups[x]+=1} puts dups.select {|k,v| v>1} You can have it on one line if you prefer: puts arr.inject(Hash.new(0)) {|d,x| d[x]+=1; d}.select {|k,v| v>1} Kind regards robert