HashSet扩展AbstractSet并且实现Set接口。它创建一个类集,该类集使用散列表进行存储。无法像TreeSet那样进行升序存储。- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Set;
- public class MapTest
- {
- public static void main(String[] args)
- {
- HashMap map = new HashMap();
- map.put("a", "aa");
- map.put("b", "bb");
- map.put("c", "cc");
- map.put("d", "dd");
- map.put("e", "ee");
- Set set = map.keySet();
- for(Iterator iter = set.iterator(); iter.hasNext();)
- {
- String key = (String)iter.next();
- String value = (String)map.get(key);
- System.out.println(key + "=" + value);
- }
- }
- }
复制代码 打印输出为
d=dd
e=ee
b=bb
c=cc
a=aa
如上面解释的那样,元素并没有按顺序进行存储
TreeSet为使用树来进行存储的Set接口提供了一个工具,对象按升序存储。访问和检索是很快的。在存储了大量的需要进行快速检索的排序信息的情况下,TreeSet是一个很好的选择
- import java.util.TreeSet;
- public class TreeSetTest
- {
- public static void main(String[] args)
- {
- TreeSet set = new TreeSet();
- set.add("C");
- set.add("A");
- set.add("B");
- set.add("E");
- set.add("F");
- set.add("D");
- System.out.println(set);
- }
- }
复制代码 打印输出为 [A, B, C, D, E, F]
正如上面解释的那样,因为TreeSet按树存储其
元素,它们被按照排序次序自动安排,如程序
输出所示
HashMap类使用散列表实现Map接口。这允许一些基本操作如get( )和put( )的运行时间保持恒定,即便对大型集合,也是这样的- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
- public class MapTest
- {
- public static void main(String[] args)
- {
- HashMap map = new HashMap();
- map.put("a", "aa");
- map.put("b", "bb");
- map.put("c", "cc");
- map.put("d", "dd");
- Set set = map.entrySet();
- for(Iterator iter = set.iterator(); iter.hasNext();)
- {
- Map.Entry entry = (Map.Entry)iter.next();
- String key = (String)entry.getKey();
- String value = (String)entry.getValue();
- System.out.println(key + " : " + value);
- }
复制代码 打印输出为
d : dd
b : bb
c : cc
a : aa
程序开始创建一个散列映射,然后将名字的映射增加到表中。接下来,映射的内容通过使用由调用函数entrySet( )而获得的集合“视图”而显示出来。关键字和值通过调用由Map.Entry定义的getKey( )和getValue( )方法而显示。
•TreeMap类通过使用树实现Map接口。
TreeMap提供了按排序顺序存储关键字/值对的有效手段,同时允许快速检索。应该注意的是,不像散列映射,树映射保证它的元素按照关键字升序排序- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.TreeSet;
- public class TreeSetTest
- {
- public static void main(String[] args)
- {
- TreeSet set = new TreeSet(new PersonComparator());
- Person p1 = new Person(10);
- Person p2 = new Person(20);
- Person p3 = new Person(30);
- Person p4 = new Person(40);
- set.add(p1);
- set.add(p2);
- set.add(p3);
- set.add(p4);
- for(Iterator iter = set.iterator(); iter.hasNext();)
- {
- Person p = (Person)iter.next();
- System.out.println(p.score);
- }
- }
- }
- class Person
- {
- int score;
- public Person(int score)
- {
- this.score = score;
- }
- public String toString()
- {
- return String.valueOf(this.score);
- }
- }
- class PersonComparator implements Comparator
- {
- public int compare(Object arg0, Object arg1)
- {
- Person p1 = (Person) arg0;
- Person p2 = (Person) arg1;
- return p2.score - p1.score;
- }
- }
复制代码 打印输出
40
30
20
10
注意:对关键字进行了排序。可以通过在创建映射时,指定一个比较函数来改变排序
|