/home/wpollock1/public_html/restricted/Java1/MergePurgeReverse.java

// Merge two arrays of Integers, Purging Dups and nulls, and reverse sort:
// A complex interview question.  Perfect code on the first try should not
// be expected.
//
// The task is not well defined: is the data sorted?  Could the arrays each
// have duplicates?  Is there a requirement or need for a single method with
// this functionality?  (If not, refactor into methods "purge", "merge", and
// possibly "reverseSort" too.)  The not-null requirement says data is an
// Integer[], not an int[].
//
// Written 3/2019 by Wayne Pollock, Tampa Florida USA

// package whatever;

import java.util.*;

class MergePurgeReverse {

   // Canned data for demo:
   private static final Integer[] firstArray =  { 1, 2, 2, null, 17 };
   private static final Integer[] secondArray = { 3, 2, 4, 5, null, 17 };

   public static void main ( String [] args ) {
      Set<Integer> set = new HashSet<>();

      for ( Integer num : firstArray ) {
         if ( num != null ) {
            set.add( num );
         }
      }
      for ( Integer num : secondArray ) {
         if ( num != null ) {
            set.add( num );
         }
      }

      // Java 8 feature:
      Integer[] result = set.stream().toArray(Integer[]::new);
      Arrays.sort(result, Collections.reverseOrder());
      System.out.println( Arrays.toString( result ) );
   }
}