java集合性能介绍以及用法总结

来源:互联网 发布:onenote mac版下载 编辑:程序博客网 时间:2024/06/06 02:46

java中常用集合总结


介绍集合之前先介绍一下迭代器,(迭代器跟集合有千丝万缕的关系,懂程序的…不多说了,不知道的看看书)。
简化对集合的操作,主要功能是遍历并选择集合中的对象,其中有三个最要的方法:

1、hasNext() 返回布尔值 看集合中还有没有元素
2、next() 返回下一个元素 返回的是O的所一定要强转一下
3、remove() 元素删除

接口 Iterator:
构建一个Iterator迭代器 –>Iterator iterator=所要进行迭代的集合对象.iterator()。

接口 Enumeration: 注意=====Enumeration已经不是主流,Iterator是它的下一代替代品
构建一个Enumeration迭代器–>Enumeration enumeration=所要进行迭代的集合对象.elements()

  1. Map接口
    Map集合提供了按照“键值对”存储元素的方法,一个键唯一映射一个值。集合中“键值对”整体作为一个实体元素时,类似List集合,但是如果分开来年,Map是一个两列元素的集合:键是一列,值是一列。与Set集合一样,Map也没有提供随机访问的能力,只能通过键来访问对应的值。
    Map的每一个元素都是一个Map.Entry,这个实体的结构是< Key, Value >样式。
  2. HashMap
    HashMap实现了Map接口,但它是非线程安全的。HashMap允许key值为null,value也可以为null,HashMap去掉了HashTable的contains方法,但是加上了containsValue()和containsKey()方法。

HashMap 一个速度最快的容器,此类不保证映射的顺序,特别是它不保证该顺序恒久不变,不是线程同步,看以下用法

public static void testHashMap(){    HashMap hashmap = new HashMap();    hashmap.put("0","c");     hashmap.put("1","a");    hashmap.put("2","b");    hashmap.put("3","a");    //存放对象用put方法 记住所存的一定是键值对            System.out.println(hashmap);        //该容器有其内部的排序方式 事实上是依据哈希算法来排的        Set set = hashmap.keySet();        //获取全部键 它的返回类型是set        Iterator iterator=set.iterator();        while(iterator.hasNext()){           System.out.print(hashmap.get(iterator.next()));           //获取迭代出来的元素        }}
  1. HashTable
    Hashtable也是Map的实现类,继承自Dictionary类。它与HashMap不同的是,它是线程安全的。而且它不允许key为null,value也不能为null,由于它是线程安全的,在效率上稍差于HashMap。

Hashtable 任何非 null 对象都可以用作键或值,现在用得不多啦,一个完全可以由其他容器替换的老容器类型 ,看以下用法:

public static void testHashTable(){    Hashtable hashtable=new Hashtable();    hashtable.put("0","c");    hashtable.put("1","a");    hashtable.put("3","c");    hashtable.put("2","b");    System.out.println("\nHashtableEntity:");    //注意与之对应的迭代器是Enumeration,而不是Iterator    Enumeration enumeration=hashtable.elements();    while(enumeration.hasMoreElements()){        System.out.println(enumeration.nextElement());    }}

4.Set接口

Set是不能包含重合元素的容器,其实现类有HashSet,继承于它的接口有SortedSet接口等。Set中提供了加、减、和交等集合操作函数。Set不能按照索引随机访问元素,这是它与List的一个重要区别。
检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
5.HashSet
HashSet实现了Set接口,其内部是采用HashMap实现的。放入HashSet的对象最好重写hashCode、equals方法,因为默认的这两个方法很可能与你的业务逻辑是不一致的,而且,要同时重写这两个函数,如果只重写其中一个,很容易发生意想不到的问题。

6.TreeSet
TreeSet同样的Set接口的实现类,同样不能存放相同的对象。它与HashSet不同的是,TreeSet的元素是按照顺序排列的,因此用TreeSet存放的对象需要实现Comparable接口。
以下用法:

public static void testTreeSet(){    TreeSet treeset=new TreeSet();//自动排序内容    treeset.add("b");    treeset.add("a");    treeset.add("c");    treeset.add("d");    System.out.println("TreeSet down");    System.out.println(treeset);    System.out.println(treeset.first());//返回第一个元素    Iterator iterator=treeset.iterator();    while(iterator.hasNext()){           System.out.print(iterator.next()+";");    }}
1 0