Search for duplicate elements in the array

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?

On 16.09.2007 13:04, Ruhe wrote:

  int count = 1;

    System.out.println(">> " + arr[j] + " *" + count + " times");

}

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

On 16 , 15:32, Robert K. [email protected] wrote:

Kind regards

    robert

Thanks a lot! This is a new level of programing knowledge for me.
I’ll try to make something like this with HashMap in Java.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs