İlk olarak çözümü Java dizilerini kullanarak oluşturalım:
package com.example.lottery; import java.util.Arrays; import java.util.Random; public class LotteryArrays { private static final int SIZE = 6; private static final int MIN_VALUE = 1; private static final int MAX_VALUE = 49; private static Random random= new Random(); public static void main(String[] args) { int[] numbers = new int[SIZE]; Arrays.fill(numbers, MIN_VALUE + MAX_VALUE); for (int i = 0; i < SIZE; ++i) { int candidate = 0; do { candidate = random.nextInt(MAX_VALUE) + 1; } while (Arrays.binarySearch(numbers, candidate) > 0); numbers[i] = candidate; Arrays.parallelSort(numbers); } System.out.println(Arrays.toString(numbers)); } }
Şimdi de aynı problemi Java'daki Collections API'yi kullanarak çözelim. Eğer Set ve TreeSet sınıflarını kullanmayı akıl edersek çözüme hızlı bir şekilde ulaşabiliriz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package com.example.console; import java.util.Random; import java.util.Set; import java.util.TreeSet; /** * * @author Binnur Kurt (binnur.kurt@gmail.com) */ public class LotteryCollections { private static final int SIZE = 6; private static Random random; public static void main(String[] args) { random = new Random(); Set<Byte> numbers= new TreeSet<>(); while (numbers.size()<SIZE){ numbers.add((byte) (random.nextInt(49) + 1)); } System.out.println(numbers); } } |
Son olarak aynı problemi Java 8 ile birlikte gelen Lambda ifadeleri ve Map/Reduce çatısını kullanarak çözelim:
package com.example.lottery; import java.util.Random; /** * * @author Binnur Kurt (binnur.kurt@gmail.com) */ public class LotteryLambda { public static void main(String[] args) { new Random() .ints(1,50) .parallel() .distinct() .limit(6) .sorted() .sequential() .forEach(System.out::println); } }
Gerçekten mükemmel bir anlatım hocam..elinize sağlık ..
ReplyDelete