zoukankan      html  css  js  c++  java
  • [笔记]java-集合

    数组

    type[];

    可返回一个数组

    java 提供了四种类型的“集合类”:Vector(矢量)、BitSet(位集)、Stack(堆栈)以及 Hashtable(散列表) 

    stack 实现了一个 LIFO(先入先出)序列,而 Hashtable 是一种 “关联数组”,允许我们将任何对象关联起来。除此以外,所有Java 集合类都能自动改变自身的大小 

    集合实际容纳的是类型 为Object 的一些对象的句柄。这种类型当然代表Java 中的所有对象,因为它是所有类的根。当然,也要注 意这并不包括基本数据类型(

    利用象 Integer、Double 之类的“封装器”类 )

    Vector

    Vector中的对象为object,所以你可以放任何对象进去,即使对象类型不同。所以为了防止放入错误类型,可以生成特定vector(has a vector)

    class Gopher {
    private int gopherNumber; Gopher(int i) {
    gopherNumber = i; }
    void print(String msg) {
    if(msg != null) System.out.println(msg); System.out.println(
    "Gopher number " + gopherNumber); }
    }
    class GopherTrap {
    static void caughtYa(Gopher g) {
    g.print("Caught one!"); }
    }
    class GopherVector {
    216
    private Vector v = new Vector(); public void addElement(Gopher m) {
    v.addElement(m); }
    public Gopher elementAt(int index) { return (Gopher)v.elementAt(index);
    }
    public int size() { return v.size(); } public static void main(String[] args) {
    GopherVector gophers = new GopherVector(); for(int i = 0; i < 3; i++)
    gophers.addElement(new Gopher(i)); for(int i = 0; i < gophers.size(); i++)
    GopherTrap.caughtYa(gophers.elementAt(i)); }
    } ///:~

    java中的interator:

    Enumeration。除下面这些外,不可再用它 做其他任何事情:
    (1) 用一个名为 elements()的方法要求集合为我们提供一个 Enumeration。我们首次调用它的 nextElement() 时,这个Enumeration会返回序列中的第一个元素。

    (2) 用nextElement()获得下一个对象。
    (3) 用hasMoreElements()检查序列中是否还有更多的对象。 

     

    BitSet

    实际是由“二进制位”构成的一个 Vector ,最小长度是一个长整数(Long)的长度:64 位 

     

    Stack

    Stack stk = new Stack();

    push(), pop()

    Vector 操作亦可针对 Stack 对象进行。这可能是由继承的特质决定的——Stack“属于”一种 Vector。因 此,能对Vector进行的操作亦可针对Stack进行,例如elementAt()方法。 

     

    Hashtable 

    散列码可以获取对象中的信息,然后将其转换成那个对象“相对唯一”的整数(int)。所有对象都有 一个散列码,而hashCode()是根类Object的一个方法。Hashtable获取对象的hashCode(),然后用它快速 查找键。这样可使性能得到大幅度提升。

    Hashtable ht = new Hashtable(); 

    containsKey();get();put()

     

     

    新集合 

    模仿c++ stl

    (1) 集合(Collection):一组单独的元素,通常应用了某种规则。在这里,一个List(列表)必须按特定 的顺序容纳元素,而一个 Set(集)不可包含任何重复的元素。
    (2) 映射(Map):一系列“键-值”对。Map 就可以返回自己键的一个Set、一个包含自己值的List 或者包含自己“键 -值”对的一个List。

    和数组相似,Map 可方便扩充到多个“维”,需简单地在一 个Map里包含其他Map(后者又可以包含更多的Map,以此类推)。 

    虚线框代表“接口”,点线框代表“抽象”类,而实线框代表普通(实际)类。点线箭头表示一个特定的类 准备实现一个接口(在抽象类的情况下,则是“部分”实现一个接口)。

    双线箭头表示一个类可生成箭头指 向的那个类的对象 

    List x = new LinkedList(); 

    List x = new ArrayList();

    Collection c = new ArrayList(); 

    使用Collections

    下面这张表格总结了用一个集合能做的所有事情(亦可对Set和List做同样的事情,尽管List还提供了一 些额外的功能)。Map 不是从 Collection 继承的,所以要单独对

    page236image10984 page236image11568 page236image12152 page236image12576

    Boolean add(Object)

    page236image14448 page236image15032

    *Ensures that the Collection contains the argument. Returns false i it doesn’t add the argument.

    page236image17104 page236image17688 page236image18112 page236image18696 page236image19280 page236image19704

    Boolean addAll(Collection)

    page236image21688 page236image22432

    *Adds all the elements in the argument. Returns true if any element were added.

    page236image24464 page236image25048 page236image25472 page236image26056 page236image26640 page236image27064

    void clear( )

    page236image28984 page236image29728

    *Removes all the elements in the Collection.

    page236image31376 page236image31960 page236image32384 page236image32968 page236image33552 page236image33976

    Boolean contains(Object)

    page236image35856 page236image36600

    True if the Collection contains the argument.

    page236image38296 page236image38880 page236image39304 page236image39888 page236image40472 page236image40896

    Boolean

    page236image42408 page236image42992 page236image43416 page236image43840
    page236image44784 page236image45528

    True if the Collection contains all the elements in the argument.

    page236image47280 page236image47864
    page237image1096 page237image1680 page237image2104

    containsAll(Collection)

    page237image3616 page237image4200 page237image4624 page237image5208 page237image5792 page237image6216
    page237image7144 page237image8048 page237image8792

    Boolean isEmpty( )

    page237image10600 page237image11184 page237image11608 page237image12192 page237image12776 page237image13200

    True if the Collection has no elements.

    page237image14960 page237image15704

    Iterator iterator( )

    Returns an Iterator that you can use to move through the elements i the Collection.

    page237image19216 page237image19800 page237image20224 page237image20808 page237image21392 page237image21816

    Boolean remove(Object)

    page237image23696 page237image24440

    *If the argument is in the Collection, one instance of that elemen is removed. Returns true if a removal occurred.

    page237image26784 page237image27368 page237image27792 page237image28376 page237image28960 page237image29384

    Boolean removeAll(Collection)

    page237image31040 page237image31624 page237image32048 page237image32632 page237image33216 page237image33640
    page237image34432 page237image35176

    *Removes all the elements that are contained in the argument. Returns true if any removals occurred.

    page237image37232 page237image37976

    Boolean retainAll(Collection)

    *Retains only elements that are contained in the argument (an

    “intersection” from set theory). Returns true if any changes occurred.

    page237image41968 page237image42552 page237image42976 page237image43560 page237image44144 page237image44568

    int size( )

    page237image46488 page237image47232

    Returns the number of elements in the Collection.

    page237image48992 page237image49576 page237image50000 page237image50584 page237image51168 page237image51592

    Object[] toArray( )

    page237image53184 page237image53768 page237image54192 page237image54776 page237image55360 page237image55784
    page237image56576 page237image57320

    Returns an array containing all the elements in the Collection.

    page237image59032 page237image59776

    Object[] toArray(Object[] a)

    page237image61688 page237image62272 page237image62696 page237image63280 page237image63864 page237image64288

    Returns an array containing all the elements in the Collection, whose type is that of the arraya rather than plainObject (you must cast the array to the right type).

    page237image67136 page237image67880
    page237image69128 page237image69712 page237image70136 page237image70560

    *This is an “optional” method, which means it might not be implemented by a particular Collection. If not, that method throw anUnsupportedOperationException.Exceptionswillbecoveredin Chapter 9.

    page237image73464 page237image74048

     

    List(接口) 顺序是 List 最重要的特性;它可保证元素按照规定的顺序排列。List 为 Collection 添加了 大量方法,以便我们在 List 中部插入和删除元素(只推荐对LinkedList 这样做)。

    List 也会生成一个 ListIterator(列表反复器),利用它可在一个列表里朝两个方向遍历,同时插入和删除位于列表中部的元 素(同样地,只建议对 LinkedList 这样做 )

    ArrayList用于替换原先的Vector。快速访问元素,但在从列表中部插入和删除元素时,速度却嫌稍慢。

    一般只应该用 ListIterator 对一 个 ArrayList 进行向前和向后遍历,不要用它删除和插入元素;

    LinkedList :可以高效率地在列表中部进行插入和删除操作。进行随机访 问时,速度却相当慢。

    也提供了 addFirst(),addLast(),getFirst(), getLast(),removeFirst() 以及 removeLast()(未在任何接口或基础类中定义),以便将其作为一个规格、 队列以及一个双向队列使用 

     

    Set(接口) 添加到Set的每个元素都必须是独一无二的。添加到Set里 的对象必须定义equals(),从而建立对象的唯一性。Set拥有与Collection完全相同的接口。

    HashSet* 用于除非常小的以外的所有Set。对象也必须定义 hashCode()

    ArraySet 由一个数组后推得到的Set。面向非常小的Set设计,特别是那些需要频繁创建和删除的。

    TreeSet 由一个“红黑树”后推得到的顺序 Set。这样一来,我们就可以从一个Set 里提到一个 顺序集合 

     

    Map(接口) 维持“键-值”对应关系(对),以便通过一个键查找相应的值
    HashMap* 基于一个散列表实现(用它代替Hashtable)。针对“键-值”对的插入和检索,这种形式具有 最稳定的性能。可通过构建器对这一性能进行调整,以便设置散列表的“能力”和“装载因子”
    ArrayMap 由一个ArrayList后推得到的Map。对反复的顺序提供了精确的控制。面向非常小的Map设计,特 别是那些需要经常创建和删除的。对于非常小的 Map,创建和反复所付出的代价要比 HashMap 低得多。但在 Map 变大以后,性能也会相应地大幅度降低
    TreeMap 在一个“红-黑”树的基础上实现。查看键或者“键-值”对时,它们会按固定的顺序排列(取决 于 Comparable 或 Comparator,稍后即会讲到)。TreeMap 最大的好处就是我们得到的是已排好序的结果。 TreeMap是含有subMap()方法的唯一一种Map,利用它可以返回树的一部分 

     

    page250image3504

    Type

    page250image5064 page250image5384 page250image5544 page250image5968 page250image6552 page250image6976

    Get

    Iteration

    page250image9576 page250image9896 page250image10056 page250image10640 page250image11064

    Insert

    page250image12736 page250image13320

    Remove

    page250image14680 page250image15424

    ArrayList

    page250image17000 page250image17424 page250image18008 page250image18432 page250image18856 page250image19280 page250image19864 page250image20288

    110

    490

    page250image22896 page250image23480 page250image23904 page250image24328 page250image24912 page250image25336

    3790

    page250image27016 page250image27760

    8730

    page250image29152 page250image29896

    LinkedList

    page250image31248 page250image31832
    page250image32704 page250image33128 page250image33712 page250image34136 page250image34560 page250image34984 page250image35568 page250image35992

    1980

    page250image37504 page250image37928 page250image38512 page250image38936 page250image39360 page250image39680

    220

    page250image41328 page250image41912 page250image42336 page250image42760 page250image43344 page250image43768

    110

    page250image45120 page250image45704 page250image46128 page250image46552 page250image46872
    page250image47392 page250image48136

    110

    page250image49488

    Type

    page251image12408 page251image12992 page251image13416 page251image14000 page251image14584 page251image15008

    Test size

    page251image16800 page251image17224 page251image17808 page251image18232

    Add

    page251image19744 page251image20168 page251image20752 page251image21176 page251image21600 page251image22024 page251image22608 page251image23032
    page251image23816 page251image24240

    Contains

    page251image25592 page251image26016 page251image26600 page251image27024
    page251image27792

    Iteration

    page251image29144 page251image29888
    page251image31160 page251image31744 page251image32168 page251image32752 page251image33336 page251image33760

    10

    22.0

    page251image36392 page251image36816 page251image37400 page251image37824 page251image38248 page251image38672 page251image39256 page251image39680

    11.0

    page251image41208 page251image41632 page251image42216 page251image42640

    16.0

    page251image44160 page251image44904

    TreeSet

    100

    22.5

    13.2

    12.1

    page251image50384 page251image50968 page251image51392 page251image51976 page251image52560 page251image52984 page251image54048 page251image54632 page251image55056

    1000

    page251image56808 page251image57232 page251image57816 page251image58240 page251image58664 page251image59088 page251image59672 page251image60096

    31.1

    page251image61608 page251image62032 page251image62616 page251image63040
    page251image63824 page251image64248 page251image64832 page251image65256

    18.7

    page251image66608 page251image67032
    page251image67800 page251image68544

    11.8

    page251image69896
    page251image71336 page251image71920 page251image72344 page251image72928 page251image73512 page251image73936

    10

    5.0

    page251image76568 page251image76992 page251image77576 page251image78000 page251image78424 page251image78848 page251image79432 page251image79856

    6.0

    page251image81384 page251image81808 page251image82392 page251image82816

    27.0

    page251image84504 page251image85248

    HashSet

    100

    6.6

    6.6

    10.9

    page251image90752 page251image91336 page251image91760 page251image92344 page251image92928 page251image93352 page251image94416 page251image95000 page251image95424 page251image95848 page251image96432

    1000

    page251image98112 page251image98536 page251image99120 page251image99544 page251image99968 page251image100392 page251image100976 page251image101400

    7.4

    page251image102912 page251image103336 page251image103920 page251image104344 page251image104768 page251image105088
    page251image105624 page251image106048 page251image106632 page251image107056

    6.6

    page251image108408 page251image108832 page251image109416
    page251image109936 page251image110680

    9.5

    Type

    page253image10312 page253image10632 page253image11056

    Test size

    page253image12720 page253image13040 page253image13464

    Put

    page253image15024 page253image15344 page253image15504 page253image15928 page253image16512 page253image16936

    Get

    page253image18768 page253image19352

    Iteration

    page253image20704 page253image21448 page253image22528 page253image22952 page253image23536 page253image23960

    10

    page253image25488 page253image25912 page253image26496 page253image26920

    11.0

    page253image28496 page253image28920 page253image29504 page253image29928 page253image30352 page253image30776 page253image31360 page253image31784

    5.0

    page253image33624 page253image34368

    44.0

    page253image35768 page253image36512

    Hashtable

    page253image37864 page253image38608
    page253image39416 page253image39840 page253image40424 page253image40848

    100

    page253image42200 page253image42624 page253image43208 page253image43632
    page253image44440 page253image44864 page253image45448 page253image45872

    7.7

    page253image47224 page253image47648 page253image48232 page253image48656
    page253image49544 page253image49968 page253image50552 page253image50976 page253image51400 page253image51824 page253image52408 page253image52832

    7.7

    page253image54344 page253image54768 page253image55352 page253image55776 page253image56200 page253image56624 page253image57208 page253image57632
    page253image58424 page253image59168

    16.5

    page253image60520 page253image61264
     

    1000

    8.0

    8.0

    14.4

    page253image66208 page253image66952 page253image68032 page253image68456 page253image69040 page253image69464

    10

    page253image70992 page253image71416 page253image72000 page253image72424

    16.0

    page253image74000 page253image74424 page253image75008 page253image75432 page253image75856 page253image76280 page253image76864 page253image77288

    11.0

    page253image79128 page253image79872

    22.0

    page253image81232 page253image81976

    TreeMap

    page253image83504 page253image83928 page253image84512 page253image84936

    100

    page253image86464 page253image86888 page253image87472 page253image87896

    25.8

    page253image89472 page253image89896 page253image90480 page253image90904 page253image91328 page253image91752 page253image92336 page253image92760

    15.4

    page253image94600 page253image95184

    13.2

    page253image96736 page253image97480 page253image98384 page253image99128 page253image99936 page253image100360 page253image100944 page253image101368

    1000

    page253image102720 page253image103144 page253image103728 page253image104152
    page253image104960 page253image105384 page253image105968 page253image106392

    33.8

    page253image107744 page253image108168 page253image108752 page253image109176
    page253image110064 page253image110488 page253image111072 page253image111496 page253image111920 page253image112344 page253image112928 page253image113352

    20.9

    page253image114864 page253image115288 page253image115872 page253image116296 page253image116720 page253image117144 page253image117728 page253image118152
    page253image118944 page253image119688

    13.6

    page253image121040 page253image121784
     

    10

    11.0

    6.0

    33.0

    page253image126736 page253image127480

    HashMap

    page253image129008 page253image129432 page253image130016 page253image130440

    100

    page253image131968 page253image132392 page253image132976 page253image133400

    8.2

    page253image134976 page253image135400 page253image135984 page253image136408 page253image136832 page253image137256 page253image137840 page253image138264

    7.7

    page253image140104 page253image140848

    13.7

    page253image142232 page253image142976 page253image143880 page253image144464 page253image145264 page253image145688 page253image146272 page253image146696

    1000

    page253image148048 page253image148472 page253image149056
    page253image149592 page253image150016 page253image150600 page253image151024

    8.0

    page253image152376 page253image152800 page253image153384
    page253image153992 page253image154416 page253image155000 page253image155424 page253image155848 page253image156272 page253image156856 page253image157280

    7.8

    page253image158792 page253image159216 page253image159800 page253image160224 page253image160648 page253image160968
    page253image161488 page253image162232

    11.9

     

    Collections 类中含有其他大量有用的实用工具:

    page260image8184 page260image8768 page260image8928 page260image9512 page260image9936

    enumeration(Collection)

    page260image11448 page260image12032 page260image12456 page260image13040 page260image13624 page260image14048
    page260image14832 page260image15416

    Produces an old-style Enumeration for the argument.

    page260image17008 page260image17752

    max(Collection) min(Collection)

    page260image19624 page260image20208 page260image20632 page260image21216 page260image21800 page260image22224

    Produces the maximum or minimum element in the argument using th natural comparison method of the objects in the Collection.

    page260image24608 page260image25352

    max(Collection, Comparator) min(Collection, Comparator)

    Produces the maximum or minimum element in theCollection using the Comparator.

    page260image29128 page260image29712 page260image30136 page260image30720 page260image31304 page260image31728

    nCopies(int n, Object o)

    page260image33360 page260image33944 page260image34368 page260image34952 page260image35536 page260image35960
    page260image36752 page260image37496

    Returns an immutable L i s t of size n whose handles all point too.

    page260image39408 page260image40152

    subList(List, int min, int max)

    page260image42128 page260image42712 page260image43136 page260image43560 page260image44144

    Returns a new List backed by the specified argumentList that is a window into that argument with indexes starting atmin and stopping just before m a x .

     

  • 相关阅读:
    洛谷模板汇总
    BZOJ1787【AHOI2008】Meet紧急集合 <LCA>
    HDU3068 最长回文 <Manacher>
    UVa12345 Dynamic len(set(a[L:R])) <带修莫队>
    BZOJ2038 小Z的袜子 <莫队>
    BZOJ1103【POI2007】大都市meg <树上差分+树状数组>
    BZOJ3226【SDOI2008】校门外的区间
    BZOJ1012【JSOI2008】最大数 <线段树>
    20170918~24周总结
    BZOJ1934【SHOI2007】善意的投票 <网络流>
  • 原文地址:https://www.cnblogs.com/zengyou/p/2772497.html
Copyright © 2011-2022 走看看