407 lines
6.8 KiB
Plaintext
407 lines
6.8 KiB
Plaintext
|
Application
|
|||
|
Programming
|
|||
|
Hend Alkittawi
|
|||
|
|
|||
|
03
|
|||
|
Java Collections
|
|||
|
Collections are Java’s Data
|
|||
|
Structures
|
|||
|
|
|||
|
JAVA COLLECTIONS
|
|||
|
-
|
|||
|
|
|||
|
In Java, Collection is an interface. It is the root interface in
|
|||
|
|
|||
|
the collection hierarchy. A collection represents a group of
|
|||
|
objects, known as its elements.
|
|||
|
-
|
|||
|
|
|||
|
Some collections allow duplicate elements and others do not.
|
|||
|
Some are ordered and others unordered.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
The java.util package contains many Java collections, a few of
|
|||
|
the most common are
|
|||
|
-
|
|||
|
|
|||
|
List
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Set
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Map
|
|||
|
|
|||
|
JAVA COLLECTIONS
|
|||
|
-
|
|||
|
|
|||
|
The Collection interface defines the behaviors of a collection,
|
|||
|
including typical operations such as
|
|||
|
-
|
|||
|
|
|||
|
add elements to the collection
|
|||
|
|
|||
|
.add()
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
access elements of the collection
|
|||
|
|
|||
|
.get()
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
loop over the elements in the collection
|
|||
|
|
|||
|
iterator
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
access an element by its index, if applicable
|
|||
|
|
|||
|
iterator
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
test whether an element is contained in the collection
|
|||
|
|
|||
|
.contains()
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
find out the size of the collection
|
|||
|
|
|||
|
.size()
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
remove elements from the collection
|
|||
|
|
|||
|
.remove()
|
|||
|
|
|||
|
JAVA COLLECTIONS HISTORY
|
|||
|
-
|
|||
|
|
|||
|
JDK 1.0: Vector, Dictionary, Hashtable, Stack, Enumeration
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
JDK 1.2: Collection, Iterator, List, Set, Map, ArrayList,
|
|||
|
HashSet, TreeSet, HashMap, WeakHashMap
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
JDK 1.4: RandomAccess, IdentityHashMap, LinkedHashMap,
|
|||
|
LinkedHashSet
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
JDK 1.5: Queue, …
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
JDK 1.6: Deque, ConcurrentSkipListSet/Map, …
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
JDK 1.7: TransferQueue, LinkedTransferQueue
|
|||
|
|
|||
|
JAVA COLLECTIONS AND GENERICS
|
|||
|
-
|
|||
|
|
|||
|
Leveraging generics when initializing a collection is a common
|
|||
|
practice.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Typically, a collection is declared by including the type of
|
|||
|
elements it contains within <...>, which is using Java's
|
|||
|
generics notation.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
For example
|
|||
|
// declare list to be a collection of Strings
|
|||
|
Collection<String> list;
|
|||
|
// initialize list to a concrete class that implements Collection
|
|||
|
list = new ArrayList<String>();
|
|||
|
|
|||
|
JAVA LISTS
|
|||
|
-
|
|||
|
|
|||
|
The List interface represents an ordered collection (also
|
|||
|
known as a sequence).
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Some of the classes that implement the List interface are
|
|||
|
-
|
|||
|
|
|||
|
ArrayList which is a resizable-array implementation of the
|
|||
|
List interface.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
LinkedList which is a doubly-linked list implementation of the
|
|||
|
List and Deque interfaces.
|
|||
|
|
|||
|
JAVA LISTS
|
|||
|
-
|
|||
|
|
|||
|
An example for using a LinkedList
|
|||
|
List<String> colorList = new LinkedList<String>();
|
|||
|
colorList.add("red");
|
|||
|
colorList.add("yellow");
|
|||
|
colorList.add("blue");
|
|||
|
|
|||
|
JAVA SETS
|
|||
|
-
|
|||
|
|
|||
|
The Set interface represents a collection that contains no
|
|||
|
duplicate elements.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Some of the classes that implement the List interface are
|
|||
|
-
|
|||
|
|
|||
|
HashSet
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
TreeSet
|
|||
|
|
|||
|
JAVA SETS
|
|||
|
-
|
|||
|
|
|||
|
An example for using a HashSet
|
|||
|
String[] colors = {"red","white","blue","green","gray","orange","tan","white","cyan","peach","gray","orange"};
|
|||
|
List<String> list = Arrays.asList(colors);
|
|||
|
System.out.printf("List: %s%n", list);
|
|||
|
|
|||
|
prints …
|
|||
|
|
|||
|
This Arrays class contains various methods for
|
|||
|
manipulating arrays (such as sorting and searching).
|
|||
|
This class also contains a static factory that allows
|
|||
|
arrays to be viewed as lists.
|
|||
|
|
|||
|
List: [red, white, blue, green, gray, orange, tan, white, cyan, peach, gray, orange]
|
|||
|
String[] colors = {"red","white","blue","green","gray","orange","tan","white","cyan","peach","gray","orange"};
|
|||
|
List<String> list = Arrays.asList(colors);
|
|||
|
Set<String> set = new HashSet<String>(list);
|
|||
|
System.out.printf("Set: %s%n", set);
|
|||
|
|
|||
|
prints …
|
|||
|
Set: [tan, green, peach, cyan, red, orange, gray, white, blue]
|
|||
|
|
|||
|
JAVA MAPS
|
|||
|
-
|
|||
|
|
|||
|
The Map interface represents an object that maps keys to values. A
|
|||
|
map cannot contain duplicate keys; each key can map to at most one
|
|||
|
value.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Some of the classes that implement the List interface are
|
|||
|
-
|
|||
|
|
|||
|
HashMap
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
TreeMap
|
|||
|
|
|||
|
JAVA MAPS
|
|||
|
-
|
|||
|
|
|||
|
An example for using a HashMap
|
|||
|
// Not using maps, maintain two arrays, one for names and one for IDs
|
|||
|
String[] studentNames = {"Alice", "Bob", "Carlos", "Diane"};
|
|||
|
String[] studentIDs = {"atf123", "ght456", "liw789", "pwt012"};
|
|||
|
// then to print out Alice, we need to know she is at index 0
|
|||
|
System.out.println( studentIDs[0] );
|
|||
|
// Instead, use a map!
|
|||
|
Map<String,String> classMap = new HashMap<String,String>();
|
|||
|
classMap.put("atf123", "Alice");
|
|||
|
//As students register for the class,
|
|||
|
classMap.put("ght456", "Bob");
|
|||
|
// you can add them to the map. Then to
|
|||
|
classMap.put("liw789", "Carlos");
|
|||
|
// retrieve them, you only need their ID.
|
|||
|
classMap.put("pwt012", "Diane");
|
|||
|
System.out.println( classMap.get("atf123") );
|
|||
|
|
|||
|
JAVA MAPS
|
|||
|
-
|
|||
|
|
|||
|
Another example for using a HashMap
|
|||
|
// Phone book implementation
|
|||
|
Map<String,PhoneNumber> phoneBook = new HashMap<String,PhoneNumber>();
|
|||
|
phoneBook.put("Alice", new PhoneNumber("210-555-1234"));
|
|||
|
phoneBook.put("Bob", new PhoneNumber("210-555-4321"));
|
|||
|
phoneBook.put("Carlos", new PhoneNumber("210-555-4444"));
|
|||
|
phoneBook.put("Diane", new PhoneNumber("210-555-1111"));
|
|||
|
System.out.println( phoneBook );
|
|||
|
|
|||
|
public class PhoneNumber{
|
|||
|
private String number;
|
|||
|
public PhoneNumber( String phoneNumber ){
|
|||
|
this.number = phoneNumber;
|
|||
|
}
|
|||
|
|
|||
|
prints …
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
@Override
|
|||
|
public String toString() {
|
|||
|
return "PhoneNumber [number=" + number + "]";
|
|||
|
}
|
|||
|
|
|||
|
{Bob=PhoneNumber [number=210-555-4321], Alice=PhoneNumber [number=210-555-1234], Diane=PhoneNumber [number=210-555-1111],
|
|||
|
Carlos=PhoneNumber [number=210-555-4444]}
|
|||
|
|
|||
|
JAVA MAPS
|
|||
|
-
|
|||
|
|
|||
|
Another example for using a HashMap
|
|||
|
Map<String, ArrayList<String>> states = new HashMap<String,ArrayList<String>>();
|
|||
|
ArrayList<String> tx = new ArrayList<String>();
|
|||
|
tx.add( "San Antonio" );
|
|||
|
tx.addAll( Arrays.asList("Austin", "Dallas", "Corpus Christi", "El Paso") );
|
|||
|
states.put("Texas", tx );
|
|||
|
ArrayList<String> ny = new ArrayList<String>();
|
|||
|
ny.addAll( Arrays.asList("NYC", "Albany", "Niagara", "Long Island") );
|
|||
|
states.put("New York", ny );
|
|||
|
System.out.println( states );
|
|||
|
|
|||
|
prints …
|
|||
|
{New York=[NYC, Albany, Niagara, Long Island], Texas=[San Antonio, Austin, Dallas, Corpus Christi, El Paso]}
|
|||
|
|
|||
|
CLASS ACTIVITY
|
|||
|
-
|
|||
|
|
|||
|
What collection types would you use in the following examples?
|
|||
|
-
|
|||
|
|
|||
|
A phone book (name, phone number)
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Storing user interaction history (clicks, actions, choices, etc)
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
An address book (name, phone number, address, etc)
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
User choices for character attributes in a game (hair color, shoes,
|
|||
|
etc)
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Ordered task manager
|
|||
|
|
|||
|
CLASS ACTIVITY
|
|||
|
-
|
|||
|
|
|||
|
What collection types would you use in the following examples?
|
|||
|
-
|
|||
|
|
|||
|
A phone book (name, phone number)
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Storing user interaction history (clicks, actions, choices, etc)
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
List
|
|||
|
|
|||
|
An address book (name, phone number, address, etc)
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Map
|
|||
|
|
|||
|
Map
|
|||
|
|
|||
|
User choices for character attributes in a game (hair color, shoes,
|
|||
|
etc)
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Set
|
|||
|
|
|||
|
Ordered task manager
|
|||
|
-
|
|||
|
|
|||
|
List
|
|||
|
|
|||
|
CLASS ACTIVITY
|
|||
|
-
|
|||
|
|
|||
|
Come up with 3 distinct applications that
|
|||
|
-
|
|||
|
|
|||
|
Require a List
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Require a Set
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Require a Map
|
|||
|
|
|||
|
CLASS ACTIVITY
|
|||
|
-
|
|||
|
|
|||
|
Come up with 3 distinct applications that
|
|||
|
-
|
|||
|
|
|||
|
Require a List
|
|||
|
-
|
|||
|
|
|||
|
Groceries list/High scores/List of images/To do
|
|||
|
list/Assignments/Labs
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Require a Set
|
|||
|
-
|
|||
|
|
|||
|
Enrollment UTSA/Census/UTSA IDs/Grocery list!/Medical
|
|||
|
files/Word count
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Require a Map
|
|||
|
-
|
|||
|
|
|||
|
Login info/UTSA schedule/Dictionary/Word count/parking spots
|
|||
|
|
|||
|
DO YOU HAVE ANY
|
|||
|
QUESTIONS?
|
|||
|
|
|||
|
THANK
|
|||
|
YOU!
|
|||
|
|
|||
|
@
|
|||
|
|
|||
|
hend.alkittawi@utsa.edu
|
|||
|
|
|||
|
By Appointment
|
|||
|
Online
|
|||
|
|
|||
|
|