Você está na página 1de 8

Tập hợp

Các kiểu tập hợp


Collection

List Set

SortedSet

ArrayList LinkedList Vector HashSet LinkedHashSet TreeSet

Map

SortedMap

Hashtable HashMap LinkedHashMap TreeMap

Hoa Sen University 2

1
Danh sách (List)
• Tạo danh sách rỗng
– Danh sách đặc: new ArrayList()
– Danh sách liên kết: new LinkedList() ()
• Cần "import java.util.*;" ở đầu mỗi file.
• Thêm phần tử vào danh sách
– add(value) (thêm vào cuối) hay add(index, value)
• Lấy phần tử thứ n
– get(index)
• Kiểm tra nếu phần tử đã có trong danh sách
– contains(element)
• Xoá phần tử
– remove(index)choặc remove(element)
• Tổng phần tử
– size()

Hoa Sen University 3

ArrayList Example
import java.util.*;
public class ListTest1 {
public static void main(String[] args) {
List entries = new ArrayList();
double d;
while((d = Math.random()) > 0.1) {
entries.add("Value: " + d);
}
String entry;
for(int i=0; i<entries.size(); i++) {
entry = (String)entries
(String)entries.get(i);
get(i);
System.out.println(entry);
}
}
}

Hoa Sen University 4

2
LinkedList
LinkedList Example
import java.util.*;
public class ListTest2 {
public static void main(String[] args) {
List entries = new LinkedList();
double d;
while((d = Math.random()) > 0.1) {
entries.add("Value: " + d);
}
String entry;
for(int i=0; i < entries.size(); i++) {
entry = (String)entries
(String)entries.get(i);
get(i);
System.out.println(entry);
}
}
}

Hoa Sen University 5

List example
import java.util.*;
public class Test2{

public static void main(String[] args) {


ArrayList list = new ArrayList();
list.add(0, "Hello 0");
list.add(1, "Hello 1");
list.remove(0);
list.add(1,"Hello 2");
for (int i = 0; i < list.size(); i++) {
System out println(list get(i));
System.out.println(list.get(i));
}
if ( list.contains("Hello 2") )
System.out.println("Found it");
}
}

Hoa Sen University 6

3
List Example
import java.util.*;
public class Test3{

public static void main(String[] args) {


ArrayList list = new ArrayList();
list.add(0, "Hello 0");
list.add(1, "Hello 1");
list.remove(“Hello 1”);
list.add(1,"Hello 2");
for (int i = 0; i < list.size(); i++) {
String s = (String)list.get(i);
System.out.println(s);
}
if ( list.contains("Hello 2") )
System.out.println("Found it");
}
}

Hoa Sen University 7

boolean equals(Object o)

ƒ Được sử dụng để kiểm tra hai đối tượng có


tương đương nhau hay không.
ƒ Ví dụ:
d
public class Student {
private int id;
public boolean equals(Object obj) {
if ( !(obj instanceof Student) )
return false;
if ( this.id == ((
((Student)obj).id
) j) )
return true;
return false;
}
}

Hoa Sen University 8

4
int hashCode()

ƒ Là giá trị nhận biết tính duy nhất của đối


tượng Æ căn cước của đối tượng.
ƒ Với class Object, hashCode sẽ là địa chỉ
bộ nhớ tham chiếu đến đối tượng.
ƒ giá trị hashCode được sử dụng trong bảng
băm.

Hoa Sen University 9

Ánh xạ (Map)
ƒ Là tập hợp các cặp key/value
ƒ Thêm phần tử
– put(Object key
key, Object value);
ƒ Lấy phần tử
– Object get(Object key)
ƒ Xoá phần tử:
– remove(Object key);
ƒ Kiểm tra phần tử:
–bboolean
l containsKey(Object
t i K (Obj t kkey); )
– boolean containsValue(Object value);
ƒ Tổng phần tử:
– int size();

Hoa Sen University 10

5
Map Example
import java.util.*;
public class Test4{

public static void main(String[] args) {


Map dict = new HashMap();
dict.put(9, "Hello 0");
dict.put(1, "Hello 1");
dict.remove(1);
dict.put(2,"Hello 2");
for (int i : (int[])dict.keySet().toArray()) {
System out println(dict get(i));
System.out.println(dict.get(i));
}
}
}

Hoa Sen University 11

Generics http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf

ƒ Java Collection đều nhận các phần tử kiểu


Object.
Object
– Khi truy xuất phần tử luôn phải đổi kiểu dù đã
biết kiểu trong tập hợp.
Š VD: int i = (int)arrayList.get(0);
– Có thể nhầm lẫn thêm phần tử khác kiểu
ngoài ý muốn vào tập hợp
Š VD: arrayList.add(10);
arrayList.add(“Hello world”);

Hoa Sen University 12

6
Generics – Tham số kiểu
public interface List<E> {
void add(E x);
Iterator<E> iterator();
i
}
public interface Iterator<E> {
E next();
boolean hasNext();
}
Cách thức hoạt động không phụ thuộc vào kiểu dữ liệu.
Sử dụng Có thể định nghĩa kiểu dữ liệu cụ thể cho từng
loại phương thức

Hoa Sen University 13

Generic List Example


import java.util.*;
public class Playing{

public static void main(String[] args) {


ArrayList<String> list = new ArrayList<String>();
list.add(0, "Hello 0");
list.add(1, "Hello 1");
list.remove("Hello 1");
list.add(1,"Hello 2");
for (String s : list) {
System.out.println(s);
}
if ( list.contains("Hello 2") )
System.out.println("Found it");
}
}

Hoa Sen University 14

7
java.util.Arrays
1. import java.util.*;
2. class SearchCollectionTest {
3. public static void main(String[] args) {
4. String [] str = {"Mark", "Ready", "Set", "Go"};
5.
6. System.out.println("Unsorted:");
7. for (String s : str)
8. System.out.print(s + " ");
9. System.out.println("\nGo = " +
10. Arrays.binarySearch(str, "Go"));
11. Arrays.sort(str);
12
12. System out println("Sorted
System.out.println( Sorted in natural order:");
order: );
13. for (String s : str) System.out.print(s + " ");
14. System.out.println("\nGo = " +
15. Arrays.binarySearch(str, "Go"));
16. }
17.}

Hoa Sen University 15

java.util.Arrays
1. import java.util.*;
2. class SearchCollectionTest {
3. public static void main(String[] args) {
4. String [] str = {"Mark", "Ready", "Set", "Go"};
5.
6
6. System out println("Unsorted:");
System.out.println( Unsorted: );
7. for (String s : str)
8. System.out.print(s + " ");
9. System.out.println("\nGo = " +
10. Arrays.binarySearch(str, "Go"));
11. MyReverseSorter ms = new MyReverseSorter();
12. Arrays.sort(str, ms);
13. for (String s : str) System.out.print(s + " ");
14. System.out.println("\nGo = " +
15. Arrays.binarySearch(str, "Go"));
16. System.out.println("Go = " +
17
17. A
Arrays.binarySearch(str,
bi S h( t "G " ms));
"Go", ))
18. }
19. }
20. class MyReverseSorter implements Comparator<String> {
21. public int compare(String s1, String s2) {
22. return s2.compareTo(s1);
23. }
24. }

Hoa Sen University 16

Você também pode gostar