SlideShare a Scribd company logo
8/30/2016 The Set Interface (The Java™ Tutorials > Collections > Interfaces)
https://docs.oracle.com/javase/tutorial/collections/interfaces/set.html 1/3
Trail: Collections 
Lesson: Interfaces
The Set Interface
A Set is a Collection that cannot contain duplicate elements. It models the mathematical set abstraction. The Set interface contains only
methods inherited from Collection and adds the restriction that duplicate elements are prohibited. Set also adds a stronger contract on the
behavior of the equals and hashCode operations, allowing Set instances to be compared meaningfully even if their implementation types differ.
Two Set instances are equal if they contain the same elements.
The Java platform contains three general­purpose Set implementations: HashSet, TreeSet, and LinkedHashSet. HashSet, which stores its
elements in a hash table, is the best­performing implementation; however it makes no guarantees concerning the order of iteration. TreeSet, which
stores its elements in a red­black tree, orders its elements based on their values; it is substantially slower than HashSet. LinkedHashSet, which is
implemented as a hash table with a linked list running through it, orders its elements based on the order in which they were inserted into the set
(insertion­order). LinkedHashSet spares its clients from the unspecified, generally chaotic ordering provided by HashSet at a cost that is only
slightly higher.
Here's a simple but useful Set idiom. Suppose you have a Collection, c, and you want to create another Collection containing the same
elements but with all duplicates eliminated. The following one­liner does the trick.
Collection<Type> noDups = new HashSet<Type>(c);
It works by creating a Set (which, by definition, cannot contain duplicates), initially containing all the elements in c. It uses the standard conversion
constructor described in the The Collection Interface section.
Or, if using JDK 8 or later, you could easily collect into a Set using aggregate operations:
c.stream()
.collect(Collectors.toSet()); // no duplicates
Here's a slightly longer example that accumulates a Collection of names into a TreeSet:
Set<String> set = people.stream()
.map(Person::getName)
.collect(Collectors.toCollection(TreeSet::new));
And the following is a minor variant of the first idiom that preserves the order of the original collection while removing duplicate elements:
Collection<Type> noDups = new LinkedHashSet<Type>(c);
The following is a generic method that encapsulates the preceding idiom, returning a Set of the same generic type as the one passed.
public static <E> Set<E> removeDups(Collection<E> c) {
    return new LinkedHashSet<E>(c);
}
Set Interface Basic Operations
The size operation returns the number of elements in the Set (its cardinality). The isEmpty method does exactly what you think it would. The add
method adds the specified element to the Set if it is not already present and returns a boolean indicating whether the element was added. Similarly,
the remove method removes the specified element from the Set if it is present and returns a boolean indicating whether the element was present.
The iterator method returns an Iterator over the Set.
The following program prints out all distinct words in its argument list. Two versions of this program are provided. The first uses JDK 8 aggregate
operations. The second uses the for­each construct.
Using JDK 8 Aggregate Operations:
Documentation
The Java™ Tutorials
8/30/2016 The Set Interface (The Java™ Tutorials > Collections > Interfaces)
https://docs.oracle.com/javase/tutorial/collections/interfaces/set.html 2/3
import java.util.*;
import java.util.stream.*;
public class FindDups {
    public static void main(String[] args) {
        Set<String> distinctWords = Arrays.asList(args).stream()
    .collect(Collectors.toSet()); 
        System.out.println(distinctWords.size()+ 
                           " distinct words: " + 
                           distinctWords);
    }
}
Using the for­each Construct:
import java.util.*;
public class FindDups {
    public static void main(String[] args) {
        Set<String> s = new HashSet<String>();
        for (String a : args)
               s.add(a);
               System.out.println(s.size() + " distinct words: " + s);
    }
}
Now run either version of the program.
java FindDups i came i saw i left
The following output is produced:
4 distinct words: [left, came, saw, i]
Note that the code always refers to the Collection by its interface type (Set) rather than by its implementation type. This is a strongly
recommended programming practice because it gives you the flexibility to change implementations merely by changing the constructor. If either of the
variables used to store a collection or the parameters used to pass it around are declared to be of the Collection's implementation type rather than
its interface type, all such variables and parameters must be changed in order to change its implementation type.
Furthermore, there's no guarantee that the resulting program will work. If the program uses any nonstandard operations present in the original
implementation type but not in the new one, the program will fail. Referring to collections only by their interface prevents you from using any
nonstandard operations.
The implementation type of the Set in the preceding example is HashSet, which makes no guarantees as to the order of the elements in the Set. If
you want the program to print the word list in alphabetical order, merely change the Set's implementation type from HashSet to TreeSet. Making
this trivial one­line change causes the command line in the previous example to generate the following output.
java FindDups i came i saw i left
4 distinct words: [came, i, left, saw]
Set Interface Bulk Operations
Bulk operations are particularly well suited to Sets; when applied, they perform standard set­algebraic operations. Suppose s1 and s2 are sets.
Here's what bulk operations do:
s1.containsAll(s2) — returns true if s2 is a subset of s1. (s2 is a subset of s1 if set s1 contains all of the elements in s2.)
s1.addAll(s2) — transforms s1 into the union of s1 and s2. (The union of two sets is the set containing all of the elements contained in
either set.)
s1.retainAll(s2) — transforms s1 into the intersection of s1 and s2. (The intersection of two sets is the set containing only the
elements common to both sets.)
s1.removeAll(s2) — transforms s1 into the (asymmetric) set difference of s1 and s2. (For example, the set difference of s1 minus s2 is
the set containing all of the elements found in s1 but not in s2.)
To calculate the union, intersection, or set difference of two sets nondestructively (without modifying either set), the caller must copy one set before
calling the appropriate bulk operation. The following are the resulting idioms.
8/30/2016 The Set Interface (The Java™ Tutorials > Collections > Interfaces)
https://docs.oracle.com/javase/tutorial/collections/interfaces/set.html 3/3
Set<Type> union = new HashSet<Type>(s1);
union.addAll(s2);
Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);
Set<Type> difference = new HashSet<Type>(s1);
difference.removeAll(s2);
The implementation type of the result Set in the preceding idioms is HashSet, which is, as already mentioned, the best all­around Set
implementation in the Java platform. However, any general­purpose Set implementation could be substituted.
Let's revisit the FindDups program. Suppose you want to know which words in the argument list occur only once and which occur more than once,
but you do not want any duplicates printed out repeatedly. This effect can be achieved by generating two sets — one containing every word in the
argument list and the other containing only the duplicates. The words that occur only once are the set difference of these two sets, which we know
how to compute. Here's how the resulting program looks.
import java.util.*;
public class FindDups2 {
    public static void main(String[] args) {
        Set<String> uniques = new HashSet<String>();
        Set<String> dups    = new HashSet<String>();
        for (String a : args)
            if (!uniques.add(a))
                dups.add(a);
        // Destructive set‐difference
        uniques.removeAll(dups);
        System.out.println("Unique words:    " + uniques);
        System.out.println("Duplicate words: " + dups);
    }
}
When run with the same argument list used earlier (i came i saw i left), the program yields the following output.
Unique words:    [left, saw, came]
Duplicate words: [i]
A less common set­algebraic operation is the symmetric set difference — the set of elements contained in either of two specified sets but not in both.
The following code calculates the symmetric set difference of two sets nondestructively.
Set<Type> symmetricDiff = new HashSet<Type>(s1);
symmetricDiff.addAll(s2);
Set<Type> tmp = new HashSet<Type>(s1);
tmp.retainAll(s2);
symmetricDiff.removeAll(tmp);
Set Interface Array Operations
The array operations don't do anything special for Sets beyond what they do for any other Collection. These operations are described in The
Collection Interface section.
Your use of this page and all the material on pages under "The Java Tutorials" banner is subject to these legal
notices.
Copyright © 1995, 2015 Oracle and/or its affiliates. All rights reserved.
Problems with the examples? Try Compiling and Running the Examples:
FAQs.
Complaints? Compliments? Suggestions? Give us your feedback.
Previous page: The Collection Interface 
Next page: The List Interface

More Related Content

What's hot (20)

PPT
Collection Framework in java
CPD INDIA
 
PPTX
collection framework in java
MANOJ KUMAR
 
PPTX
Java.util
Ramakrishna kapa
 
PPTX
Java Collections Framework Inroduction with Video Tutorial
Marcus Biel
 
PDF
Collections Api - Java
Drishti Bhalla
 
PPT
java collections
javeed_mhd
 
PPT
JAVA Collections frame work ppt
Ranjith Alappadan
 
PDF
07 java collection
Abhishek Khune
 
PPT
Java collections concept
kumar gaurav
 
PDF
Collections in Java Notes
Shalabh Chaudhary
 
ODP
Java Collections
parag
 
PPT
Java collection
Arati Gadgil
 
PPT
Java Collections Framework
Sony India Software Center
 
PDF
Collections Java e Google Collections
André Faria Gomes
 
PPT
Collections in Java
Khasim Cise
 
PPTX
Java collections
Amar Kutwal
 
PDF
5 collection framework
Minal Maniar
 
DOCX
Java collections notes
Surendar Meesala
 
PDF
Java Collections Tutorials
Prof. Erwin Globio
 
PDF
The list interface (the java™ tutorials collections interfaces)
charan kumar
 
Collection Framework in java
CPD INDIA
 
collection framework in java
MANOJ KUMAR
 
Java.util
Ramakrishna kapa
 
Java Collections Framework Inroduction with Video Tutorial
Marcus Biel
 
Collections Api - Java
Drishti Bhalla
 
java collections
javeed_mhd
 
JAVA Collections frame work ppt
Ranjith Alappadan
 
07 java collection
Abhishek Khune
 
Java collections concept
kumar gaurav
 
Collections in Java Notes
Shalabh Chaudhary
 
Java Collections
parag
 
Java collection
Arati Gadgil
 
Java Collections Framework
Sony India Software Center
 
Collections Java e Google Collections
André Faria Gomes
 
Collections in Java
Khasim Cise
 
Java collections
Amar Kutwal
 
5 collection framework
Minal Maniar
 
Java collections notes
Surendar Meesala
 
Java Collections Tutorials
Prof. Erwin Globio
 
The list interface (the java™ tutorials collections interfaces)
charan kumar
 

Similar to The set interface (the java™ tutorials collections interfaces) (20)

PDF
Collections in Java Interview Questions PDF By ScholarHat
Scholarhat
 
PPTX
Advanced Java - UNIT 3.pptx
eyemitra1
 
PPTX
22CS305-UNIT-1.pptx ADVANCE JAVA PROGRAMMING
logesswarisrinivasan
 
PDF
Java collections-interview-questions
yearninginjava
 
PPT
11000121065_NAITIK CHATTERJEE.ppt
NaitikChatterjee
 
PPT
M251_Meeting 8 (SetsandMap Advanced Java).ppt
smartashammari
 
PPT
M251_Meeting 8 (Sets and Maps_Java_).ppt
smartashammari
 
PDF
Java Collection Framework for BCA Students
Jainul Musani
 
PPT
Md08 collection api
Rakesh Madugula
 
DOC
24 collections framework interview questions
Arun Vasanth
 
PPTX
Java Collection Framework 2nd year B.Tech.pptx
kmd198809
 
PPT
description of Collections, seaching & Sorting
mdimberu
 
PDF
Array list (java platform se 8 )
charan kumar
 
PPT
20 ch22 collections
Abhijit Gaikwad
 
PPTX
Collection Framework in Java | Generics | Input-Output in Java | Serializatio...
Sagar Verma
 
PPT
Collection framework
DilvarSingh2
 
PPTX
collectionsframework210616084411 (1).pptx
ArunPatrick2
 
PDF
Discuss the characteristics of ArrayList, LinkedList, and Vector and.pdf
info785431
 
PPTX
Nature Activities Binder _ by Slidesgo.pptx
IllllBikkySharmaIlll
 
Collections in Java Interview Questions PDF By ScholarHat
Scholarhat
 
Advanced Java - UNIT 3.pptx
eyemitra1
 
22CS305-UNIT-1.pptx ADVANCE JAVA PROGRAMMING
logesswarisrinivasan
 
Java collections-interview-questions
yearninginjava
 
11000121065_NAITIK CHATTERJEE.ppt
NaitikChatterjee
 
M251_Meeting 8 (SetsandMap Advanced Java).ppt
smartashammari
 
M251_Meeting 8 (Sets and Maps_Java_).ppt
smartashammari
 
Java Collection Framework for BCA Students
Jainul Musani
 
Md08 collection api
Rakesh Madugula
 
24 collections framework interview questions
Arun Vasanth
 
Java Collection Framework 2nd year B.Tech.pptx
kmd198809
 
description of Collections, seaching & Sorting
mdimberu
 
Array list (java platform se 8 )
charan kumar
 
20 ch22 collections
Abhijit Gaikwad
 
Collection Framework in Java | Generics | Input-Output in Java | Serializatio...
Sagar Verma
 
Collection framework
DilvarSingh2
 
collectionsframework210616084411 (1).pptx
ArunPatrick2
 
Discuss the characteristics of ArrayList, LinkedList, and Vector and.pdf
info785431
 
Nature Activities Binder _ by Slidesgo.pptx
IllllBikkySharmaIlll
 
Ad

More from charan kumar (8)

PDF
Volatile keyword
charan kumar
 
PDF
Tree map (java platform se 8 )
charan kumar
 
PDF
The map interface (the java™ tutorials collections interfaces)
charan kumar
 
PDF
Linked list (java platform se 8 )
charan kumar
 
PDF
Linked hashmap (java platform se 8 )
charan kumar
 
PDF
Hash map (java platform se 8 )
charan kumar
 
PDF
Collectn framework
charan kumar
 
PDF
Collectn framework copy
charan kumar
 
Volatile keyword
charan kumar
 
Tree map (java platform se 8 )
charan kumar
 
The map interface (the java™ tutorials collections interfaces)
charan kumar
 
Linked list (java platform se 8 )
charan kumar
 
Linked hashmap (java platform se 8 )
charan kumar
 
Hash map (java platform se 8 )
charan kumar
 
Collectn framework
charan kumar
 
Collectn framework copy
charan kumar
 
Ad

Recently uploaded (20)

PPTX
week 1-2.pptx yueojerjdeiwmwjsweuwikwswiewjrwiwkw
rebznelz
 
PPTX
PLANNING A HOSPITAL AND NURSING UNIT.pptx
PRADEEP ABOTHU
 
PPTX
Parsing HTML read and write operations and OS Module.pptx
Ramakrishna Reddy Bijjam
 
PDF
Andreas Schleicher_Teaching Compass_Education 2040.pdf
EduSkills OECD
 
PPTX
Natural Language processing using nltk.pptx
Ramakrishna Reddy Bijjam
 
PPTX
Iván Bornacelly - Presentation of the report - Empowering the workforce in th...
EduSkills OECD
 
PPTX
ESP 10 Edukasyon sa Pagpapakatao PowerPoint Lessons Quarter 1.pptx
Sir J.
 
PDF
Rapid Mathematics Assessment Score sheet for all Grade levels
DessaCletSantos
 
PDF
Nanotechnology and Functional Foods Effective Delivery of Bioactive Ingredien...
rmswlwcxai8321
 
PDF
Indian National movement PPT by Simanchala Sarab, Covering The INC(Formation,...
Simanchala Sarab, BABed(ITEP Secondary stage) in History student at GNDU Amritsar
 
PPTX
Lesson 1 Cell (Structures, Functions, and Theory).pptx
marvinnbustamante1
 
PDF
Cooperative wireless communications 1st Edition Yan Zhang
jsphyftmkb123
 
PDF
Free eBook ~100 Common English Proverbs (ebook) pdf.pdf
OH TEIK BIN
 
PDF
Our Guide to the July 2025 USPS® Rate Change
Postal Advocate Inc.
 
PPTX
Elo the Hero is an story about a young boy who became hero.
TeacherEmily1
 
PDF
TechSoup Microsoft Copilot Nonprofit Use Cases and Live Demo - 2025.06.25.pdf
TechSoup
 
PPTX
The Gift of the Magi by O Henry-A Story of True Love, Sacrifice, and Selfless...
Beena E S
 
PPTX
How to Setup Automatic Reordering Rule in Odoo 18 Inventory
Celine George
 
DOCX
Lesson 1 - Nature and Inquiry of Research
marvinnbustamante1
 
PPTX
How to Add a Custom Button in Odoo 18 POS Screen
Celine George
 
week 1-2.pptx yueojerjdeiwmwjsweuwikwswiewjrwiwkw
rebznelz
 
PLANNING A HOSPITAL AND NURSING UNIT.pptx
PRADEEP ABOTHU
 
Parsing HTML read and write operations and OS Module.pptx
Ramakrishna Reddy Bijjam
 
Andreas Schleicher_Teaching Compass_Education 2040.pdf
EduSkills OECD
 
Natural Language processing using nltk.pptx
Ramakrishna Reddy Bijjam
 
Iván Bornacelly - Presentation of the report - Empowering the workforce in th...
EduSkills OECD
 
ESP 10 Edukasyon sa Pagpapakatao PowerPoint Lessons Quarter 1.pptx
Sir J.
 
Rapid Mathematics Assessment Score sheet for all Grade levels
DessaCletSantos
 
Nanotechnology and Functional Foods Effective Delivery of Bioactive Ingredien...
rmswlwcxai8321
 
Indian National movement PPT by Simanchala Sarab, Covering The INC(Formation,...
Simanchala Sarab, BABed(ITEP Secondary stage) in History student at GNDU Amritsar
 
Lesson 1 Cell (Structures, Functions, and Theory).pptx
marvinnbustamante1
 
Cooperative wireless communications 1st Edition Yan Zhang
jsphyftmkb123
 
Free eBook ~100 Common English Proverbs (ebook) pdf.pdf
OH TEIK BIN
 
Our Guide to the July 2025 USPS® Rate Change
Postal Advocate Inc.
 
Elo the Hero is an story about a young boy who became hero.
TeacherEmily1
 
TechSoup Microsoft Copilot Nonprofit Use Cases and Live Demo - 2025.06.25.pdf
TechSoup
 
The Gift of the Magi by O Henry-A Story of True Love, Sacrifice, and Selfless...
Beena E S
 
How to Setup Automatic Reordering Rule in Odoo 18 Inventory
Celine George
 
Lesson 1 - Nature and Inquiry of Research
marvinnbustamante1
 
How to Add a Custom Button in Odoo 18 POS Screen
Celine George
 

The set interface (the java™ tutorials collections interfaces)