Mexi 7ce1c11d0e update 6 anni fa
.gitignore first commit 6 anni fa
.travis.yml Create .travis.yml 6 anni fa
DuplicateDeleter.java convert to bluej 6 anni fa
IntegerDuplicateDeleter.java update 6 anni fa
IntegerDuplicateDeleterTest.java convert to bluej 6 anni fa
README.md Update 'README.md' 6 anni fa
StringDuplicateDeleter.java update 6 anni fa
StringDuplicateDeleterTest.java convert to bluej 6 anni fa
package.bluej update 6 anni fa
pom.xml first commit 6 anni fa

README.md

Delete Duplicates

  • Objective
    • To write methods which remove duplicate elements from an array.
  • Purpose
    • To demonstrate practical understanding of arrays, loops, and basic composition.
  • Instructions

    • The IntegerDuplicateDeleter and StringDuplicateDeleter both inherit from the abstract class DuplicateDeleter. The DuplicateDeleter class has two required methods that the IntegerDuplicateDeleter and StringDuplicateDeleter need to implement. You need to add the two methods into the two classes and add a constructor to call the DuplicateDeleter method to make your code compile.
    • Given an object, IntegerDuplicateDeleter, with a composite Integer[] object, write a method
      • removeDuplicatesExactly which removes all values in the array which occur exactly the specified number of times.
      • removeDuplicates which removes all values in the array which occur at least the specified number of times.

    • Given an object, StringDuplicateDeleter, with a composite String[] object, write a method
      • removeDuplicatesExactly which removes all values in the array which occur exactly the specified number of times.
      • removeDuplicates which removes all values in the array which occur at least the specified number of times.
  • Restrictions

    • No use of any built-in data structures, (Collection, List, Map)
    • Operations should be idempotent
      • If the input is the same, then the outputs of the methods should always be the same, regardless of how many times the method is called.





removeDuplicateExactly(n)

Example 1

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{1, 1, 1, 23, 23, 56, 57, 58};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicateExactly(3);
    
    // : Then
        Integer[] expected = new Integer[]{23, 23, 56, 57, 58};
    assertArrayEquals(expected, actual);
    

Example 2

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{1, 1, 1, 23, 23, 56, 57, 58};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicateExactly(1);
    
    // : Then
        Integer[] expected = {1, 1, 1, 23, 23};
    assertArrayEquals(expected, actual);
    

Example 3

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicateExactly(3);
    
    // : Then
        Integer[] expected = {1, 1, 2, 4, 4, 5, 5, 5, 5};
    assertArrayEquals(expected, actual);
    





removeDuplicates(n)

Example 1

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{1,1,1,23,23,56,57,58};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicateExactly(1);
    
    // : Then
        Integer[] expected = {};
    assertArrayEquals(expected, actual);
    

Example 2

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicates(2);
    
    // : Then
        Integer[] expected = {2};
    assertArrayEquals(expected, actual);
    

Example 3

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicates(3);
    
    // : Then
        Integer[] expected = {1, 1, 2, 4, 4};
    assertArrayEquals(expected, actual);
    





Idempotence

Example 1

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    deleter.removeDuplicates(0);
    deleter.removeDuplicates(1);
    deleter.removeDuplicates(2);
    
    // : When
    Integer[] actual = deleter.removeDuplicates(3);
    
    // : Then
        Integer[] expected = {1, 1, 2, 4, 4};
    assertArrayEquals(expected, actual);
    

Example 2

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{1, 1, 1, 23, 23, 56, 57, 58};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
        deleter.removeDuplicates(0);
    deleter.removeDuplicates(1);
    deleter.removeDuplicates(2);
    
    // : When
    Integer[] actual = deleter.removeDuplicatesExactly(3);
    
    // : Then
        Integer[] expected = {23, 23, 56, 57, 58};
    assertArrayEquals(expected, actual);