Java学习笔记--集合框架

Collection接口

  1. 是List、Set和Queue接口的父接口
  2. 定义了可用于操作List、Set、Queue的方法--增删改查

1、List接口及其实现类--ArrayList

  1. List是元素有序并且可以重复的集合,被称为序列。
  2. List可以精准的控制每个元素的插入位置,或者删除某个位置元素。
  3. ArrayList--数组序列,是List的一个重要实现类。
  4. ArrayList底层是由数组实现的。

注意:对象存入集合都变成Object类型,取出时需要类型转换。

2、ArrayList常用的方法

  • 添加

    ArrayList list = new ArrayList();
    //直接在列表后追加
    list.add(obj);
    //在指定位置添加
    list.add(0, obj);
    Object[] objs = {obj1, obj2};
    //在列表后追加一个新的列表
    list.add(Arrays.asList(objs));
    //在指定位置添加一个新的列表
    list.add(0, Arrays.asList(objs))
    
  • 获取List中元素的个数

    int size = list.size();
    
  • 获取List中的元素

    Object obj = list.get(index);
    
  • 修改List中某个元素的值

    //代表指定索引为0的元素替换为obj5
    list.set(0, obj5);
    
  • 删除List中的某个元素

    //从列表中移除第一次出现的指定元素(如果存在)。如果列表不包含元素,则不更改列表。
    list.remove(obj5);
    //移除列表中指定位置的元素。将所有的后续元素向左移动(将其索引减1)。返回从列表中移除的元素。
    list.remove(index);
    //从列表中移除指定collection中包含的其所有元素。
    Object[] objs = {obj1, obj2};
    list.removeAll(Arrays.asList(objs));
    
  • 获取某个元素在List中的索引位置

    //indexOf返回某个元素在list中第一次出现的索引
    int index = list.indexOf(obj);
    //lastIndexOf返回某个元素在list中最后一次出现的索引
    int lastIndex = list.lastIndexOf(obj);
    
  • 判断list是否包含某个或多个对象

    boolean exist = list.contains(obj);
    Object[] objs = {obj1, obj2};
    boolean exist1 = list.containsAll(Arrays.asList(objs));
    

注意:
1、如果想要在某个List中只放某个指定类及其子类的实例时,需要使用到泛型,泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错!
2、泛型不能使用基本类型!

3、Set接口及其实现类--HashSet

  1. Set是元素无序并且不可以重复的集合,被称为集。
  2. HashSet -- 哈希集,是Set的一个重要实现类。

注意:Set中的元素是不可重复的

4、Map接口和HashMap类

  1. Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value。
  2. Map中的健值对以Entry类型的对象实例形式存在。
  3. 键(key值)不可重复,value值可以。
  4. 每个键最多只能映射到一个值。
  5. Map接口提供了分别返回key值集合,value值集合以及Entry(键值对)集合的方法。
  6. Map支持泛型,形式如:Map<K,V>。
  7. HashMap是Map接口的一个重要实现类,也是最常用的,基于哈希表实现。
  8. HashMap中的Entry对象是无序排列的。
  9. Key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复)。

5、HaseMap常用方法

  • clear()
    从此映射中移除所有映射关系。

  • containsKey(Object key)
    如果此映射包含指定键的映射关系,则返回true。

  • containsValue(Object value)
    如果此映射将一个或多个键映射到指定值,则返回true。

  • entrySet()
    返回此映射中包含的映射关系的set视图

  • equals(Object o)
    比较指定的对象与此映射是否相等

  • get(Object key)
    返回指定键所映射的值,如果此映射不包含该键的映射关系,则返回null

  • hashCode()
    返回此映射的哈希码值

  • isEmpty()
    如果此映射未包含键-值关系,则返回true

  • keySet()
    返回此映射中包含的键的set视图

  • put(K key, V value)
    将指定的值与此映射中指定键关联,如果不存在该key,则新建key-value对,否则将原有的key对应的value修改为新的value。

  • putAll(Map<? extends K,? extends V> m)
    从指定映射中将所有映射关系复制到此映射中

  • remove(Object key)
    如果存在一个键的映射关系,则将其从此映射中移除

  • size()
    返回此映射中的键-值映射关系数

  • values()
    返回此映射中包含的值的Collection视图

  • entrySet()
    获取映射中的entry集合。eg:Set<Map.Entry<String, Book>> entrySet = books.entrySet();

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

推荐阅读更多精彩内容

  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 758评论 0 2
  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 1,944评论 0 13
  • 转载自:Java集合框架实例 1- 介绍 集合是程序和语言的基本思想。应用程序通常都会应用到集合,例如雇员的信息,...
    01_小小鱼_01阅读 400评论 0 1
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 879评论 0 1
  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵胜奥阅读 4,828评论 0 1