Re: Finding Duplicate Values In An Array List
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