BAEL-1539 shuffling collections (#3567)

* BAEL-1539 Added list, set and map shuffling code exaamples

* #BAEL-1539 fixed a typo

* #BAEL-1539 refactored sample code, added unit tests

* #BAEL-1539 Added unit tests and example for shuffling with custom randomness

* #BAEL-1539 removed source code and kept only tests as tests are sufficient code sample themselves

* #BAEL-1539 updated map shuffling example to use lambdas

* #BAEL-1539 lambda refactoring

* Fixed an indentation
This commit is contained in:
Harshil Sharma 2018-02-16 19:03:34 +05:30 committed by KevinGilmore
parent 25424dfe3d
commit 666c07c7be
1 changed files with 70 additions and 0 deletions

View File

@ -0,0 +1,70 @@
package com.baeldung.shufflingcollections;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;
import static org.assertj.core.api.Assertions.assertThat;
public class ShufflingCollectionsUnitTest {
@Test
public void whenShufflingList_thenListIsShuffled() {
List<String> students = Arrays.asList("Foo", "Bar", "Baz", "Qux");
System.out.println("List before shuffling:");
System.out.println(students);
Collections.shuffle(students);
System.out.println("List after shuffling:");
System.out.println(students);
}
@Test
public void whenShufflingMapKeys_thenValuesAreShuffled() {
Map<Integer, String> studentsById = new HashMap<>();
studentsById.put(1, "Foo");
studentsById.put(2, "Bar");
studentsById.put(3, "Baz");
studentsById.put(4, "Qux");
System.out.println("Students before shuffling:");
System.out.println(studentsById.values());
List<Integer> shuffledStudentIds = new ArrayList<>(studentsById.keySet());
Collections.shuffle(shuffledStudentIds);
List<String> shuffledStudents = shuffledStudentIds.stream()
.map(id -> studentsById.get(id))
.collect(Collectors.toList());
System.out.println("Students after shuffling");
System.out.println(shuffledStudents);
}
@Test
public void whenShufflingSet_thenElementsAreShuffled() {
Set<String> students = new HashSet<>(Arrays.asList("Foo", "Bar", "Baz", "Qux"));
System.out.println("Set before shuffling:");
System.out.println(students);
List<String> studentList = new ArrayList<>(students);
Collections.shuffle(studentList);
System.out.println("Shuffled set elements:");
System.out.println(studentList);
}
@Test
public void whenShufflingWithSameRandomness_thenElementsAreShuffledDeterministically() {
List<String> students_1 = Arrays.asList("Foo", "Bar", "Baz", "Qux");
List<String> students_2 = Arrays.asList("Foo", "Bar", "Baz", "Qux");
Collections.shuffle(students_1, new Random(5));
Collections.shuffle(students_2, new Random(5));
assertThat(students_1).isEqualTo(students_2);
}
}