## \$show=/label

Learn Java Program To Print All Distinct Elements of a given integer array using 3 methods. 1) Nested for loop 2) Using sorting technique 3) Using hashset Method 3 is optimized and TIme Complexity O(n).

## Program to find Unique Array Element

We will learn, how to find and print all distinct elements of a given integer array.

Objective:

Given a set of integers in array, we have to print all unique values from the array. This array may contain duplicate values and the output of our program should be printing only distinct numbers.

## Examples:

```Example 1: array1[] = {1, 2, 3, 4, 5, 6, 7, 8}
Output 1: 1 2 3 4 5 6 7 8

Example 2: array2[] = {20, 10, 30, 20, 67, 100, 90, 20, 90}
Output 2: 10, 20, 30, 67, 90, 100

Example 3: array3[] = {23, 46, 54, 33, 14, 19, 23, 33, 99, 14}
Output 3: 23, 46, 54, 33, 14, 19, 99
```

This is a common telephonic interview question to understand the thinking of the candidate. You should ask some questions to the interviewer whether the you understand the question correctly. This reveals understanding the problem and how you are trying to solve the problem.

## Questions to interviewer

1) Does array contains negative numbers?
2) Is array sorted?
3) Output elements or values order should be as same as in input array?

If you ask valid questions, interviewer will get good impression on you.

First, We will see the easier solutions then slowly learn how to write optimized code for the problem.

## Solution 1: Burte-Force procedure:

This is very simple solution using two for loops. A for loop inside a another for loop is called as Nested for loop.

The outer loop picks an element one by one starting from the leftmost element and the inner loop checks if the element is present on left side of it. If present, then ignores the element, else prints the element. Following is the implementation of the simple algorithm.

This program looks very simple but not.

```package examples.java.w3schools.array.programs;

public class UniqueNumbersForLoop {

/**
* Prints all unique numbers in the array arr using for loops
*
* @param arr
*/
static void printUnique(int arr[]) {

int length = arr.length;
// For loop picks all elements one by one
System.out.print("Printing unique number from array are: ");
for (int i = 0; i < length; i++) {
// Check if the picked element is already printed
int j;
for (j = 0; j < i; j++)
if (arr[i] == arr[j])
break;

// If not printed earlier, then print it
if (i == j)
System.out.print(arr[i] + " ");

}
}

// Main Driver Program
public static void main(String[] args) {
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 2, 4, 6, 8 };
printUnique(arr);

}

}
```

### Output:

The above program produces the below output.

```Printing unique number from array are: 1 2 3 4 5 6 7 8
```

Time Complexity of for loop: O(n2). See for the method 2 below for optimizing it.

## Solution 2: Use Sorting technique

We can further optimize the above solution using sorting technique. The idea is simple. First, We need to sort the given array that makes all same numbers appears in the consecutive. Once the occurrences become consecutive, we can traverse the sorted array and print distinct elements in O(n) time.

See the below implementation code. We can use any sorting techniques or can use Arrays.sort(arr) method.

### Implementation using sorting technique:

```import java.util.Arrays;

public class UniqueNumbersForLoop {

/**
* Prints all unique numbers for the array arr using sorting technique
*
* @param arr
*/
static void printUnique(int arr[]) {

// Getting the length of the array.
int length = arr.length;

// First sort the array so that all occurrences become consecutive
Arrays.sort(arr);
System.out.print("Sorting technique: Printing unique number from array are: ");
// Traversing the sorted array
for (int i = 0; i < length; i++) {
// Move the index ahead while there are duplicates
while (i < length - 1 && arr[i] == arr[i + 1])
i++;

// print last occurrence of the current element
System.out.print(arr[i] + " ");
}
}

// Main Driver Program
public static void main(String[] args) {
int arr[] = { 20, 10, 30, 20, 67, 100, 90, 20, 90 };
printUnique(arr);

}

}

```

### Output:

The above program produces the below output.

```Sorting technique: Printing unique number from array are: 10 20 30 67 90 100
```

In this case, Time Complexity of for loop: O(nlogn). Still we can optimize using the method 3.

## Solution 3: Using Hashset

In this method, First we traverse the input array from left to right and check each element is present in the hashset, if not present then add the element to the hashset and print it. If the element is already present in the hashset then ignore that element.

Below is the implementation using Hashset.

```package examples.java.w3schools.array.programs;

import java.util.HashSet;
import java.util.Set;

public class UniqueNumbersForLoop {

/**
* Prints all unique numbers for the array arr using HashSet
*
* @param arr
*/
static void printUnique(int arr[]) {
// Creating a empty Hashset instances which is used to store the values of
// array.
Set values = new HashSet();

// Getting array length.
int length = arr.length;

System.out.print("Priting unique values using Hashmap for the given array: ");
// Iterating array using for loop.
for (int i = 0; i < length; i++) {
if (!values.contains(arr[i])) {
System.out.print(arr[i] + " ");
}

}

}

// Main Driver Program
public static void main(String[] args) {
int arr[] = { 23, 46, 54, 33, 14, 19, 23, 33, 99, 14 };
printUnique(arr);

}
}
```

### Output:

The above program produces the below output.

```Priting unique values using Hashmap for the given array: 23 46 54 33 14 19 99
```

In this case, Time Complexity of for loop: O(n). This is the best solution(Solution 3). Here, the output order is preserved as in input.

BLOGGER: 2
1. thanks for implementation along with explanation.

1. Thank you. I am glad to know it is helpful to you.

happy learning

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java Program To Print All Distinct Elements of a given integer array
Java Program To Print All Distinct Elements of a given integer array
Learn Java Program To Print All Distinct Elements of a given integer array using 3 methods. 1) Nested for loop 2) Using sorting technique 3) Using hashset Method 3 is optimized and TIme Complexity O(n).