$show=/label

Java Program To Print All Distinct Elements of a given integer array

SHARE:

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.


Print All Distinct Elements of a given integer array

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


We should ask primarily

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])) {
    values.add(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.

COMMENTS

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

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

      happy learning

      Delete
Please do not add any spam links in the comments section.

About Us

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).
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRAp0pEellJbHiGCBPyZTzDlT2Xufuaf9incR9hXzIxuQgfnXjsxLceWbW5JCtrgpOnU8LLlbz79H25jThfvq9sCzdHxRQp-Es3hL33eU5aYNFYlLCSNg-bKGstybK6wCUOBfXrbs5MjM/s320/Print+All+Distinct+Elements+of+a+given+integer+array.PNG
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRAp0pEellJbHiGCBPyZTzDlT2Xufuaf9incR9hXzIxuQgfnXjsxLceWbW5JCtrgpOnU8LLlbz79H25jThfvq9sCzdHxRQp-Es3hL33eU5aYNFYlLCSNg-bKGstybK6wCUOBfXrbs5MjM/s72-c/Print+All+Distinct+Elements+of+a+given+integer+array.PNG
JavaProgramTo.com
https://www.javaprogramto.com/2019/04/print-distinct-elements-given-integer-array.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2019/04/print-distinct-elements-given-integer-array.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content