Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #29032

Re: Finding Duplicate Values In An Array List

From Robert Klemme <shortcutter@googlemail.com>
Newsgroups comp.lang.java.programmer
Subject Re: Finding Duplicate Values In An Array List
Date 2014-07-10 19:24 +0200
Message-ID <c280hpF266aU1@mid.individual.net> (permalink)
References <92f9302e-854e-4162-ad22-87900b4e7d5a@googlegroups.com> <lpjko2$dbh$1@dont-email.me>

Show all headers | View raw


On 09.07.2014 16:47, Daniele Futtorovic wrote:
> Here's another, shorter one:
>
> public static void main(String[] ss){
>    Scanner sc = new Scanner(System.in);
>    Set<Integer> sieve = new HashSet<Integer>();
>    List<Integer> stash = new ArrayList<Integer>(20);
>
>    while( stash.size() < 20 ){
>      System.err.printf( "Enter %d more number(s) between 10 and 100:%n",
> 20 - stash.size() );
>      String raw = sc.next();
>
>      try {
>        int input = Integer.parseInt(raw);
>
>        if( input < 10 || input > 100 ){
>          System.err.println( "Out of range: " + input );
>        }
>        else if( ! sieve.add( input ) ){
>          System.err.println( "Duplicate: " + input );
>        }
>        else {
>          stash.add( input );
>          System.err.println( stash );
>        }
>      }
>      catch( NumberFormatException nfex  ){
>        System.err.println( "Not a number: " + raw );
>      }
>    }

Similar amount of lines, but differently distributed

package golf;

import java.util.BitSet;
import java.util.Scanner;

public class FiDuWa {

   private static final int LIMIT = 20;
   private static final int MIN = 10;
   private static final int MAX = 100;

   public static void main(String[] args) {
     @SuppressWarnings("resource")
     final Scanner scan = new Scanner(System.in);
     final StringBuilder stash = new StringBuilder();
     final BitSet used = new BitSet();

     while (used.cardinality() < LIMIT) {
       final int i = Integer.parseInt(scan.next());

       if (i >= MIN && i <= MAX) {
         if (!used.get(i)) {
           if (!used.isEmpty())
             stash.append(' ');

           stash.append(i);
           used.set(i);
           System.out.println(stash);
         } else
           System.err.println("Duplicate: " + i);
       } else {
         System.err.println("Not in range: " + i);
       }
     }
   }
}

The Java standard library is a remarkable beast and BitSets are probably 
underused.

Kind regards

	robert

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Finding Duplicate Values In An Array List gunitinug@gmail.com - 2014-07-09 02:31 -0700
  Re: Finding Duplicate Values In An Array List Joerg Meier <joergmmeier@arcor.de> - 2014-07-09 11:35 +0200
    Re: Finding Duplicate Values In An Array List gunitinug@gmail.com - 2014-07-09 02:40 -0700
      Re: Finding Duplicate Values In An Array List Jukka Lahtinen <jtfjdehf@hotmail.com.invalid> - 2014-07-09 12:48 +0300
  Re: Finding Duplicate Values In An Array List Daniele Futtorovic <da.futt.news@laposte.net> - 2014-07-09 16:47 +0200
    Re: Finding Duplicate Values In An Array List Robert Klemme <shortcutter@googlemail.com> - 2014-07-10 19:24 +0200
      Re: Finding Duplicate Values In An Array List Daniele Futtorovic <da.futt.news@laposte.net> - 2014-07-12 16:18 +0200
  Re: Finding Duplicate Values In An Array List Roedy Green <see_website@mindprod.com.invalid> - 2014-07-12 20:45 -0700

csiph-web