Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #38824

Interview question - better solution for MergePurgeAndReverseOrder()

From Graeme Geldenhuys <graemeg@example.net>
Newsgroups comp.lang.java.programmer
Subject Interview question - better solution for MergePurgeAndReverseOrder()
Date 2019-03-29 15:01 +0000
Organization Aioe.org NNTP Server
Message-ID <q7lbvc$152e$1@gioia.aioe.org> (permalink)

Show all headers | View raw


Hi,

I recently attended a Java developer interview and had to implement the
MergePurgeAndReverseSort() method. I managed to complete it and
afterwards wrote some unit tests to confirm that it works. But is there
a better way to implement it, or did I do an okay job about it.

I can post the unit tests too if that might help.

Any feedback would be very much appreciated.

Regards,
  Graeme



***********************************************
public class Main {

	public static void main(String[] args) {
		Integer[] v1 = new Integer[] { 1, 2, null, 3 };
		Integer[] v2 = new Integer[] { 1, 2, 3, 4 };
		int[] arr = Util.MergePurgeAndReverseSort(v1, v2, true);

		for (int i = 0; i < arr.length; i++)
			System.out.println(arr[i]);

	}

}

***********************************************

import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class Util {

	/*
	 * [x] Merge the two arrays
	 * [x] remove duplicates
	 * [x] remove NULL's
	 * [x] sort in reverse order
	 * [x] return as an int[] array
	 */
	public static int[] MergePurgeAndReverseSort(Integer[] values1,
Integer[] values2, boolean reverse) {
		// merge arrays
		Integer[] v1andv2 = new Integer[values1.length + values2.length];
		System.arraycopy(values1, 0, v1andv2, 0, values1.length);
		System.arraycopy(values2, 0, v1andv2, values1.length, values2.length);

		// Use a set to remove duplicates
		Set<Integer> intSet = new HashSet<>();
		for (Integer item : v1andv2) {
			// We could check for null's here too, or handle it separately as
shown below
			if (item != null)
				intSet.add(item);
		}

		// sort in reverse order
		List<Integer> lst;
		if (reverse)
			lst =
intSet.stream().sorted(Collections.reverseOrder()).collect(Collectors.toList());
		else
			lst = intSet.stream().sorted().collect(Collectors.toList());


		// unbox data
		int[] n = lst.stream().mapToInt(Integer::intValue).toArray();

		return n;
	}
}
	
***********************************************

Back to comp.lang.java.programmer | Previous | NextNext in thread | Find similar


Thread

Interview question - better solution for MergePurgeAndReverseOrder() Graeme Geldenhuys <graemeg@example.net> - 2019-03-29 15:01 +0000
  Re: Interview question - better solution for MergePurgeAndReverseOrder() Eric Sosman <esosman@comcast-dot-net.invalid> - 2019-03-29 11:19 -0400
    Re: Interview question - better solution for MergePurgeAndReverseOrder() Graeme Geldenhuys <graemeg@example.net> - 2019-03-29 16:42 +0000
      Re: Interview question - better solution for MergePurgeAndReverseOrder() Eric Sosman <esosman@comcast-dot-net.invalid> - 2019-03-29 13:47 -0400
        Re: Interview question - better solution for MergePurgeAndReverseOrder() Eric Sosman <esosman@comcast-dot-net.invalid> - 2019-03-29 13:53 -0400
        Re: Interview question - better solution for MergePurgeAndReverseOrder() Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2019-03-29 19:42 +0100
  Re: Interview question - better solution for MergePurgeAndReverseOrder() Graeme Geldenhuys <graemeg@example.net> - 2019-03-29 16:53 +0000
    Re: Interview question - better solution for MergePurgeAndReverseOrder() Eric Douglas <e.d.programmer@gmail.com> - 2019-03-29 10:19 -0700
    Re: Interview question - better solution for MergePurgeAndReverseOrder() Jukka Lahtinen <jtfjdehf@hotmail.com.invalid> - 2019-03-30 11:23 +0200
      Re: Interview question - better solution for MergePurgeAndReverseOrder() Graeme Geldenhuys <graemeg@example.net> - 2019-03-30 11:16 +0000
  Re: Interview question - better solution for MergePurgeAndReverseOrder() Eric Douglas <e.d.programmer@gmail.com> - 2019-03-29 13:20 -0700
    Re: Interview question - better solution for MergePurgeAndReverseOrder() Graeme Geldenhuys <graemeg@example.net> - 2019-03-30 11:21 +0000
      Re: Interview question - better solution for MergePurgeAndReverseOrder() Eric Douglas <e.d.programmer@gmail.com> - 2019-04-01 04:56 -0700
  Re: Interview question - better solution for MergePurgeAndReverseOrder() bursejan@gmail.com - 2019-03-29 15:40 -0700

csiph-web