JAVA集合-Collection与Map的子接口

① List接口

      List继承Collection接口,List是不唯一有序的Collection 线性列表,长度可动态改变。第一位元素的索引是0。

      List有get(int index)方法,根据索引来获取值。set(int index,E element)方法,修改索引下的值。

      List实例化需要用到子类,List有三个子类:ArrayList,Vector,LinkedList。

② Set接口

      Set继承Collection接口,Set是唯一无序的Collection。Set检索效率比较低,插入删除的效率比较高,插入删除不会影响元素的位置。实现使用对add、equals以及hashCode方法有额外标准。

      add添加重复的数据,添加失败返回false。添加数据成功返回true。

      因对象相等的本质是对象hashCode值判断的,如果两个对象相等,就需要覆盖Object的equals与hashCode方法

③ SortSet接口

    SortSet继承Set接口,保存有序集合。

    SortSet是按照对象的比较函数决定元素的位置(以Comparator comparator()的自然方式),不是依靠元素的插入顺序排序。

    SortSet提供方法

    frist():获取第一个位置的元素也是最小的元素;

    last():获取最后一个位置的元素也是最大的元素;

    headSet(E e):在SortSet中获取比小与e的所有元素集合;

    subSet(E form,E to):在SortSet中获取from元素与to元素之间的元素集合(包括from不包括to);

    tailSet(E e):在SortSet中获取比e大或等于e的所有元素集合。

④ Queue接口

    Queue继承Collection接口,队列是一种特别的线性表,队列仅允许头部移除元素,尾部增加元素。队列是一个先进先出的列表。

    队列除了继承Collection 接口的add方法以及renove方法,还额外定义了自己的添加、删除以及查询的方法。

    以下是jdk1.5阻塞队列操作

        add方法 添加元素 如果队列已满,则抛出IIIegaISlabEepeplian异常;

        remove方法 移除元素 如果是空队列,则抛出NoSuchElementException异常;

        element方法 返问头部元素 如果是空队列,则抛出NoSuchElementException异常;

        offer方法 添加元素 如果添加成功返回true,添加失败返回false;

        poll方法 移除并返回头部元素 如果是空队列,则返回null;

        peek方法 返回头部元素 如果是空队列,则返回null;

        put方法 添加元素 如果队列已满,则阻塞;

        take方法 移除并返回头部元素 如果是空队列,则阻塞。

    Queue队列尽量避免使用Collection 接口的add方法与remove方法,操作时可能会抛出异常。可使用offer方法与poll方法,根据返回值来判断是否操作成功。

    LinkedList 也实现了Queue接口。

    Queue<String> queue =new LinkedList<String>();就可以使用Queue方法。

⑤ Deque接口

    继承Queue接口,是双端线性集合。两端支持插入元素或者移除元素,实现即可没有容量的限制,也可限制大小。

    Deque接口作为先进先出的队列,方法与Queue接口等效。

    Deque 方法  等效   Queue 方法

    addLast(e)              add(e)           添加元素至尾部,插入失败抛出异常

    offerLast(e)             offer(e)          添加元素至尾部,插入成功则返回 true,否则返回 false

    removeFirst()          remove()       移除头部元素,如果此双端队列为空,它将抛出一个异常

    pollFirst()                 poll()             移除并返回头部元素,如果此双端队列为空,返回null

    getFirst()                  element()      返回头部元素,如果此双端队列为空,它将抛出一个异常

    peekFirst()                peek()          返回头部元素,如果此双端队列为空,返回null

    Deque接口作为先进后出的堆栈,方法与Stack类等效。

    Deque 方法  等效   Stack方法

    addFirst(e)              push(e)          添加元素至头部,插入失败抛出异常

    removeFirst()          pop()              获取并移除头部元素,双端队列为空,它将抛出一个异常。

    peek()                     peekFirst()      获取但不移除头部元素

    虽然 Deque 不建议插入 null 元素,这是因为其中部分方法会将 null 用作特殊的返回值来指示双端队列为空。

    Deque 实现通常不定义基于元素的 equals 和 hashCode 方法,而是从 Object 类继承基于身份的 equals 和 hashCode 方法。

⑥ SortedMap

    继承于 Map,使 Key 保持在升序排列。实现Comparable接口,单独写一个比较器。

    除实现Map接口的方法以外还需实现的方法

    SortedMap subMap(K fromKey, K toKey) 返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括);

    SortedMap headMap(K toKey) 返回此映射的部分视图,其键值严格小于toKey;

    SortedMap tailMap(K fromKey) 返回此映射的部分视图,其键值严格大于等于fromKey;

    K firstKey() 返回最后(最高)的键;

    K lastKey() 返回最后(最高)的键;

    Set keySet() 返回在此映射中所包含键的Set,该 set 的迭代器将按升序返回这些键;

    Collection values()  返回在此映射中所包含值的集合。按键的升序返回这些值;

    Set entrySet() 返回在此映射中包含的Entry的Set,该 set 的迭代器将按升序键顺序返回这些条目。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容