Groovy Operators

Control Statements

Groovy File Handling

Groovy Error & Exceptions

Groovy Multithreading

Groovy Synchronization

Groovy - List unique(Comparator comparator) method



Description

Groovy List unique(Comparator comparator) method modifies the list by removing any duplicates. Duplicates are removed using Groovy's default number-aware comparator. Comparator is used to determine unique items. Original List is updated as per the operation.

Syntax

public List unique(Comparator comparator)

Parameters

comparator − a comparator to check uniqueness of elements.

Return Value

A list of unique elements of the list.

Example - Getting Unique elements from a List of Integers

Following is an example of the usage of this method −

main.groovy

import org.codehaus.groovy.runtime.NumberAwareComparator

def lst = [11, 12, 13, 10, 15, 11, 10, 12, 15]

// getting list of unique elements 
uniqueList = lst.unique(new NumberAwareComparator())
println(uniqueList)

Output

When we run the above program, we will get the following result −

[11, 12, 13, 10, 15]

Example - Getting Unique elements from a List of Strings

Following is an example of the usage of this method −

main.groovy

import org.codehaus.groovy.runtime.NumberAwareComparator

def lst = ["Apple","Mango","Orange","Papaya","Apple", "Apple"]

// getting list of unique elements 
uniqueList = lst.unique(new NumberAwareComparator())
println(uniqueList)

Output

When we run the above program, we will get the following result −

[Apple, Mango, Orange, Papaya]

Example - Getting Unique elements from a List of Objects

Following is an example of the usage of this method −

main.groovy

def lst = [new Student(1, "Julie"),new Student(2, "Robert"),new Student(1, "Julie")]

// getting list of unique and even elements 
uniqueList = lst.unique(new RollNoComparator())
println(uniqueList)

class RollNoComparator implements Comparator {
    public int compare(Object obj1, Object obj2){
        return ((Student)obj1).getRollNo() - ((Student)obj2).getRollNo()
    }
}

class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public boolean equals(Object obj) {
      Student s = (Student)obj;
      return this.rollNo == s.rollNo && this.name.equalsIgnoreCase(s.name);
   }
   
   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
}

Output

When we run the above program, we will get the following result −

[[ 1, Julie ], [ 2, Robert ]]
groovy_lists.htm
Advertisements