The LinkedHashSet is an ordered version of HashSet that maintains a doubly-linked List across all elements present in java.util package. When the iteration order is needed to be maintained, this class is used.
TreeSet in
Example Approach 1: In the example instead of using custom classes, the wrapper classes of java like Integer, Double, Float, etc to sort LinkedHashSet using TreeSet is used. For doing this convert LinkedHashSet element into TreeSet and can do this in three different ways:- Implementation: Approach 2: In this, the Comparator interface is used. Comparator interface is used to order the objects of user-defined classes. A comparator object is capable of comparing two objects of two different classes. Implementation:Input : Student = {{"c",2},{"b",1},{"a",3}}
Output:
Sort by name = {{"a",3},{"b",1},{"c",2}}
Sort by rollNo = {{"b",1},{"c",2},{"a",3}}
// Java Program to sort LinkedHashSet of custom
// class objects using TreeSet
import
java.util.Collections;
import
java.util.LinkedHashSet;
import
java.util.TreeSet;
public
class
GFG {
public
static
void
main(String[] args)
{
// creating a LinkedHashSet
LinkedHashSet<Double> lset0 =
new
LinkedHashSet<>();
// adding elements to LinkedHashSet
lset0.add(
1.009
);
lset0.add(
1.10
);
lset0.add(
1.01
);
lset0.add(
1.019
);
// creating a TreeSet
// and adding LinkedHashSet element to TreeSet
// using the constructor of the TreeSet
TreeSet<Double> tset0 =
new
TreeSet<>(lset0);
// Displaying the output
System.out.println(
"Sorted Set(ascending): "
+ tset0);
// creating a LinkedHashSet
LinkedHashSet<Integer> lset1
=
new
LinkedHashSet<>();
// adding elements to LinkedHashSet
lset1.add(
10
);
lset1.add(
7
);
lset1.add(
2
);
lset1.add(
20
);
// creating TreeSet
TreeSet<Integer> tset1 =
new
TreeSet<>();
// adding LinkedHashSet element to TreeSet
// using for loop and add() method
for
(Integer i : lset1)
tset1.add(i);
// Displaying the output
System.out.println(
"Sorted Set(ascending): "
+ tset1);
// creating LinkedHashSet
LinkedHashSet<Character> lset2
=
new
LinkedHashSet<>();
// adding elements to the LinkedHashSet
lset2.add(
's'
);
lset2.add(
'h'
);
lset2.add(
'i'
);
lset2.add(
'n'
);
// creating a TreeSet
TreeSet<Character> tset2 =
new
TreeSet<>();
// adding LinkedHashSet element to TreeSet
// element using addAll() method
tset2.addAll(lset2);
System.out.println(
"Sorted Set(ascending): "
+ tset2);
// creating a LinkedHashSet
LinkedHashSet<String> lset3 =
new
LinkedHashSet<>();
// adding elements to the
// LinkedHashSet
lset3.add(
"Sandra"
);
lset3.add(
"Shishya"
);
lset3.add(
"Sarthak"
);
lset3.add(
"Sarah"
);
lset3.add(
"Sagar"
);
lset3.add(
"Sashi"
);
lset3.add(
"Sonika"
);
// creating a TreeSet but this time it will
// sort it in descending order
// so for sorting in descending order
// we will use Collections.reverseOrder() in
// the constructor of TreeSet
TreeSet<String> tset3
=
new
TreeSet<>(Collections.reverseOrder());
// adding elements of LinkedHashSet to treeSet
// using addAll() method
tset3.addAll(lset3);
// Displaying output
System.out.println(
"Sorted Set(descending): "
+ tset3);
}
}
Sorted Set(ascending): [1.009, 1.01, 1.019, 1.1]
Sorted Set(ascending): [2, 7, 10, 20]
Sorted Set(ascending): [h, i, n, s]
Sorted Set(descending): [Sonika, Shishya, Sashi, Sarthak, Sarah, Sandra, Sagar]
Java Program to sort LinkedHashSet of custom
// class objects using TreeSet
import
java.util.Comparator;
import
java.util.LinkedHashSet;
import
java.util.TreeSet;
class
friendsMarks {
// class field
String name;
String nickName;
int
marks;
// parameterised constructor
public
friendsMarks(String name, String nickName,
int
marks)
{
this
.name = name;
this
.nickName = nickName;
this
.marks = marks;
}
// getter for name
public
String getName() {
return
name; }
// setter for name
public
void
setName(String name) {
this
.name = name; }
// getter for marks
public
int
getMarks() {
return
marks; }
// setter for marks
public
void
setMarks(
int
marks) {
this
.marks = marks; }
// getter for nickname
public
String getNickName() {
return
nickName; }
// setter for nickname
public
void
setNickName(String nickName)
{
this
.nickName = nickName;
}
//@Override toString method
public
String toString()
{
return
"friendsMarks{"
+
"name='"
+ name + '\
''
+
", nickName='"
+ nickName +
'\''
+
", marks="
+ marks +
'}'
;
}
}
// for comparing names
class
nameCompare
implements
Comparator<friendsMarks> {
@Override
public
int
compare(friendsMarks friend1,
friendsMarks friend2)
{
return
friend1.getName().compareTo(
friend2.getName());
}
}
// for comparing nick name
class
nickNameCompare
implements
Comparator<friendsMarks> {
@Override
public
int
compare(friendsMarks obj1, friendsMarks obj2)
{
return
obj1.getNickName().compareTo(
obj2.getNickName());
}
}
// for comparing marks
class
marksCompare
implements
Comparator<friendsMarks> {
@Override
public
int
compare(friendsMarks f1, friendsMarks f2)
{
if
(f1.getMarks() > f2.getMarks()) {
return
1
;
}
else
{
return
-
1
;
}
}
}
public
class
Main {
public
static
void
main(String[] args)
{
// Creating LinkedHashSet
LinkedHashSet<friendsMarks> linkedHashSet
=
new
LinkedHashSet<>();
// adding elements to LinkedHashSet
linkedHashSet.add(
new
friendsMarks(
"Raushan"
,
"Chamgader"
,
99
));
linkedHashSet.add(
new
friendsMarks(
"Yashdeep"
,
"Dopa"
,
95
));
linkedHashSet.add(
new
friendsMarks(
"Rupesh"
,
"Gian"
,
92
));
linkedHashSet.add(
new
friendsMarks(
"Shishya"
,
"Gorilla"
,
47
));
linkedHashSet.add(
new
friendsMarks(
"Sarthak"
,
"Nagin"
,
78
));
linkedHashSet.add(
new
friendsMarks(
"Sonika"
,
"Chipkali"
,
67
));
linkedHashSet.add(
new
friendsMarks(
"Himanshu"
,
"Lalten"
,
57
));
// Creating TreeSet
// and we have to pass Comparator object
// of marksCompare class
// in the TreeSet constructor
// so that we can sort according to the marks
TreeSet<friendsMarks> treeSet0
=
new
TreeSet<>(
new
marksCompare());
// storing elements of LinkedHashSet
// into TreeSet by using method addAll()
treeSet0.addAll(linkedHashSet);
System.out.println(
"Sorting on the basis of marks"
);
// Displaying using loop
for
(friendsMarks tree : treeSet0)
System.out.println(tree);
// Creating TreeSet
// and we have to pass Comparator object
// of nameCompare class
// in the TreeSet constructor
// so that we can sort according to the name
TreeSet<friendsMarks> treeSet1
=
new
TreeSet<>(
new
nameCompare());
// storing elements of LinkedHashSet
// into TreeSet by using method addAll()
treeSet1.addAll(linkedHashSet);
// Displaying using loop
System.out.println(
"\n\nSorting on the basis of name"
);
for
(friendsMarks tree : treeSet1)
System.out.println(tree);
// Creating TreeSet
// and we have to pass Comparator object
// of nickNameCompare class
// in the TreeSet constructor
// so that we can sort according to the nickname
TreeSet<friendsMarks> treeSet2
=
new
TreeSet<>(
new
nickNameCompare());
// storing elements of LinkedHashSet
// into TreeSet by using method addAll()
treeSet2.addAll(linkedHashSet);
// Displaying using loop
System.out.println(
"\n\nSorting on the basis of nick-name"
);
for
(friendsMarks tree : treeSet2)
System.out.println(tree);
}
}
Sorting on the basis of marks
friendsMarks{name='Shishya', nickName='Gorilla', marks=47}
friendsMarks{name='Himanshu', nickName='Lalten', marks=57}
friendsMarks{name='Sonika', nickName='Chipkali', marks=67}
friendsMarks{name='Sarthak', nickName='Nagin', marks=78}
friendsMarks{name='Rupesh', nickName='Gian', marks=92}
friendsMarks{name='Yashdeep', nickName='Dopa', marks=95}
friendsMarks{name='Raushan', nickName='Chamgader', marks=99}
Sorting on the basis of name
friendsMarks{name='Himanshu', nickName='Lalten', marks=57}
friendsMarks{name='Raushan', nickName='Chamgader', marks=99}
friendsMarks{name='Rupesh', nickName='Gian', marks=92}
friendsMarks{name='Sarthak', nickName='Nagin', marks=78}
friendsMarks{name='Shishya', nickName='Gorilla', marks=47}
friendsMarks{name='Sonika', nickName='Chipkali', marks=67}
friendsMarks{name='Yashdeep', nickName='Dopa', marks=95}
Sorting on the basis of nick-name
friendsMarks{name='Raushan', nickName='Chamgader', marks=99}
friendsMarks{name='Sonika', nickName='Chipkali', marks=67}
friendsMarks{name='Yashdeep', nickName='Dopa', marks=95}
friendsMarks{name='Rupesh', nickName='Gian', marks=92}
friendsMarks{name='Shishya', nickName='Gorilla', marks=47}
friendsMarks{name='Himanshu', nickName='Lalten', marks=57}
friendsMarks{name='Sarthak', nickName='Nagin', marks=78}