Java集合->Map接口->TreeMap和HashTable
1. TreeMap
- TreeMap和HashMap相比,同樣實作了Map接口;
- HashMap效率高于TreeMap;
- 在需要排序的Map時,選用TreeMap, TreeMap預設按Key自增的方式排序。
import java.util.Map;
import java.util.TreeMap;
public class MyTreeMap {
public static void main(String[] args) {
Map<Integer, String> mp = new TreeMap<>();
mp.put(11,"aa");
mp.put(13,"ab");
mp.put(33,"cc");
mp.put(6,"gg");
for(Integer key : mp.keySet()){
System.out.println(key + "-->" + mp.get(key));
/**
* 輸出結果按key自增輸出
6-->gg
11-->aa
13-->ab
33-->cc
*/
}
Map<Student, String> mp1 = new TreeMap<>();
mp1.put(new Student(1006,"Ano",89),"Good");
mp1.put(new Student(1002,"Charlie",99),"Great");
mp1.put(new Student(1001,"Jackson",84),"Good");
mp1.put(new Student(1004,"Babe",89),"Good");
for(Student stu : mp1.keySet()){
System.out.println(stu + "-->" + mp1.get(stu));
}
}
}
class Student implements Comparable<Student>{
int id;
String name;
int score;
public Student(int id, String name, int score){
super();
this.id = id;
this.name = name;
this.score = score;
}
@Override
public String toString() {
return this.id + "-->" + this.name + "-->" + this.score;
}
@Override
public int compareTo(Student o) {
//排序規則
if(this.score > o.score){
return 1;
}else if(this.score < o.score){
return -1;
}else{
if(this.id > o.id){
return 1;
}else if(this.id < o.id){
return -1;
}else{
return 0;
}
}
}
}
2. HashTable
- HashTable與HashMap相比,HashTable線程安全,效率低;
- HashMap線程不安全,效率高;
- HashTable不允許Key或Value為null; HashMap允許Key或Value為null。