zoukankan      html  css  js  c++  java
  • java 集合

    http://www.cnblogs.com/yoyozhou/archive/2012/01/10/2318453.html

    java 集合

    2012-01-10 19:17 by Rainbow, 118 visits, 收藏编辑

    在java中,集合相关的内容多放在 java.util 包里面。java的集合主要有Collection接口和Map接口,同时还有Iterator 这个接口是实现foreach(for T in C)的遍历集合元素的操作。

    image

    • Collection 接口类方法:

    方法名描述
    add(Object o)像集合中加入一个对象的引用
    void clear()清空集合中所有对象的引用
    contains(Object o)判读集合中是否存在特定对象的引用
    Iterator iterator返回一个Iterator对象,使用foreach遍历
    remove(Object o)从集合中删除特定对象的引用
    size()返回集合的元素数目
    Object[] toArray()返回一个数组
    isEmpty()判读集合是否为空

    以上是collection接口的共有方法,特定的子类还包含自己特有的有些方法。如 addAll(),first(),indexOf(),get()等等。

    • Iterator 接口的方法

    方法描述
    hasNext()判断是否已经到底
    next()返回下一个元素
    remove从集合中删除由上一个next()返回的对象

     

    • 集合类方面的异同:

    image

    ① 如果涉及到堆栈,队列等操作,应该考虑用List。如果要进行大量的随机访问,应使用ArrayList;如果经常进行插入与删除操作,用使用LinkedList。

    ② HashMap设计用来快速访问;而TreeMap保持“键”始终处于排序状态,所以没有HashMap快。LinkedHashMap保持元素插入的顺序,但是也通过散列提供了快速访问能力。

    ③ Set不接受重复元素。HashSet提供最快的查询速度,而TreeSet保持元素处于排序状态。LinkedHashSet以插入顺序保存元素。

    ④ 对哈希表的操作,作为key的对象要正确重写equals和hashCode方法。

    ⑤ 尽量返回接口而非实际的类型(针对抽象编程),如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。

    ⑥ 程序中不应该使用过时的Vector\Hashtable\Stack。

    • 常见的问题

    collection和collections有啥区别?

    collection是java中关于集合的接口。而collections是java.util中的类,它包含了对集合操作的静态方法。

    HasMap和Hastable的区别?

    都属于Map接口的类,实现了将惟一键映射到特定的值上。

    HasMap类没有分类和排序。它允许一个null键和null值。

    Hastable类似于HasMap但是不允许null键和null值。因此比Hasmap慢。

    其实关于集合的内容还非常多。好比,排序,性能等方面。以后需要写一篇专门的文章。

  • 相关阅读:
    164 Maximum Gap 最大间距
    162 Find Peak Element 寻找峰值
    160 Intersection of Two Linked Lists 相交链表
    155 Min Stack 最小栈
    154 Find Minimum in Rotated Sorted Array II
    153 Find Minimum in Rotated Sorted Array 旋转数组的最小值
    152 Maximum Product Subarray 乘积最大子序列
    151 Reverse Words in a String 翻转字符串里的单词
    bzoj3994: [SDOI2015]约数个数和
    bzoj 4590: [Shoi2015]自动刷题机
  • 原文地址:https://www.cnblogs.com/lexus/p/2340765.html
Copyright © 2011-2022 走看看