1. Overview
In this article, you'll learn how to remove the duplicate values from array in different ways using java programming.
Let us learn how to work with the sorted and unsorted array for this scenario.
In the previous article, we've explained the different ways to remove duplicates from List in Java 8?
2. Removing the duplicates from the sorted array (Without using Set)
First, let us write a simple code that deletes the duplicates elements from the sorted array. If the input array is not sorted then this does not work.
Here, you can use another array to store each non-duplicate value.
package com.javaprogramto.programs.arrays.duplicates; public class RemoveDuplicatesSortedArray { public static void main(String[] args) { // creating an array int[] inputArray = new int[] { 1, 1, 2, 2, 3, 6, 6, 7, 8, 8, 9, 9 }; // first element into new int variable int currentValue = inputArray[0]; // boolean variable to check the array value is already found or not. boolean found = false; // core logic to remove duplicates. for (int i = 0; i < inputArray.length; i++) { if (currentValue == inputArray[i] && !found) { found = true; } else if (currentValue != inputArray[i]) { // printing value System.out.print(" " + currentValue); currentValue = inputArray[i]; found = false; } } System.out.print(" " + currentValue); } }
Output:
1 2 3 6 7 8 9
3. Removing Duplicates With LinkedHashSet
Next, now let us try with LinkedHashSet to delete repeated values from array.
package com.javaprogramto.programs.arrays.duplicates; import java.util.Arrays; import java.util.LinkedHashSet; import java.util.Set; public class RemoveDuplicatesWithSet { public static void main(String[] args) { // creating an array Integer[] arrayWithDuplicates = new Integer[] { 3, 5, 6, 2, 38, 5, 34, 5, 69, 8, 7, 6 }; // printing duplicates array System.out.println(Arrays.toString(arrayWithDuplicates)); // passing the array to linked hashset. LinkedHashSet<Integer> linkedSet = new LinkedHashSet(Arrays.asList(arrayWithDuplicates)); Integer[] finalArrayWithoutDuplicates = new Integer[linkedSet.size()] ; // converting back to int array from set finalArrayWithoutDuplicates = linkedSet.toArray(finalArrayWithoutDuplicates); // printing the array System.out.println(Arrays.toString(finalArrayWithoutDuplicates)); } }
Output:
[3, 5, 6, 2, 38, 5, 34, 5, 69, 8, 7, 6] [3, 5, 6, 2, 38, 34, 69, 8, 7]
LinkedHashSet is used to preserve the order of how the numbers appeared in the input array.
If you use HashSet rather than LinkedHashSet then output order is not preserved.
4. Removing duplicates from array in java 8
Finally, Look at the java 8 stream api methods that will collect only distinct values from the stream using the distinct() method. This method works for sorted and non-sorted arrays.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class RemoveDuplicatesJava8 { public static void main(String[] args) { // creating an array Integer[] arrayWithDuplicates = new Integer[] { 3, 5, 6, 2, 38, 5, 34, 5, 69, 8, 7, 6 }; // Removing duplicates from array using java 8 stream api List<Integer> listWithoutDuplicatesValues = Arrays.asList(arrayWithDuplicates) .stream().distinct() .collect(Collectors.toList()); // printing non duplicates as list. System.out.println(listWithoutDuplicatesValues); } }
Output:
[3, 5, 6, 2, 38, 34, 69, 8, 7]
5. Conclusion
In this article, you've seen the different ways to. remove duplicate values from an array.
As usual, all examples are over GitHub.
No comments:
Post a Comment
Please do not add any spam links in the comments section.