JavaSE:集合框架
创始人
2024-05-28 12:47:46
0
  1. 为什么用集合框架

如果不知道需要多少对象,或者用较为复杂的方式存储对象,可以用集合框架

  1. 集合框架包含的内容

  1. ArrayList

实践

  • .size()

  • .add(Object o) .add(int index, Object o)

  • .get(int index)

  • .contains(Object o)

  • .remove(Object o) .remove(int index)

    public static void main(String[] args) {List dogs = new ArrayList();dogs.add(new Dog("yiyi"));  // 0dogs.add(new Dog("erer"));  // 1dogs.add(new Dog("sasa"));  // 2 -> yiyidogs.add(new Dog("sisi"));Dog yiyi = new Dog("yiyi");dogs.add(2, yiyi);/*dogs.size()(Dog)dogs.get(i)上面的,再.getName()*/System.out.println(dogs.size());for(int i = 0; i < dogs.size(); i++){System.out.println(((Dog)dogs.get(i)).getName());}System.out.println();// 。contains(Object)System.out.println(dogs.contains(yiyi));    // trueSystem.out.println();// .remove()   序号或者Objectdogs.remove(2);System.out.println(dogs.contains(yiyi));    // falseSystem.out.println();for(int i = 0; i < dogs.size(); i++){System.out.println(((Dog)dogs.get(i)).getName());}}

源码分析

  1. ArrayList概述

数组实现, 与Vector相类似,但vector 是比较老的集合,线程安全;ArrayList是线程不安全

2.ArrayList数据结构

数组, Object类型的元素

3. 源码分析

  1. 继承和层次关系

分析:

a. 为什么ArrayList类和List接口之间,要夹一个AbstractList类?

AbstractList 是抽象类,除了List接口,还有一些通用的方法,用来抽取底层的所有通用方法先一起实现。所以说,还有其他的类又这个AbstractList类的继承。

b. 剩下的cloneable/ Serializable/ RandomAccess 接口

Random Access:快速随机存取,用for循环效率更高。否则,用iterator来迭代更好

Coloneable:可以用.clone()

Serializable:可以序列化,即从类变成字节流,从字节流变成类

  1. 属性

size/ Max_Array_Size等

  1. 构造方法和其他方法的源码

看源码,跳过

  1. LinkedList

实践

在任何位置集合的任何位置(头、中间、尾)进行添加、获取、删除狗狗对象

  • .addFirst(Object o) .addLast(Object o)

  • .getFirst() .getLast()

  • .removeFirst() .removeLast()

    public static void main(String[] args) {LinkedList Dogs = new LinkedList<>();Dog yiyi = new Dog("yiyi");Dog erer = new Dog("erer");Dog sansan = new Dog("sansan");Dog sisi = new Dog("sisi");/*先在头加入 erer再在头加入 yiyi*/Dogs.addFirst(erer);Dogs.addFirst(yiyi);for(int i = 0; i < Dogs.size(); i++){System.out.println(((Dog)Dogs.get(i)).getName());}/*获取Last的Dog名字, erer*/System.out.println(((Dog)Dogs.getLast()).getName());}

源码分析

  1. LinkList概述

双向链表,插入删除高效

AbstractSequentialList-> 可以当作堆栈、队列、双端队列进行操作

List -> 可当作队列操作

Deque -> 可当双端队列使用

Cloneable: 可克隆; Serializable:可序列化

  1. LinkList的数据结构

双向链表

  1. LinkedList特性

a. 链表、适合频繁插入、删除

b. 可以当作队列

c. 顺序存取,每次操作必须按照从开始到结束的顺序遍历;而不是像ArrayList那样,可以通过index实现随机访问

  1. 属性、构造方法等

size first last

空参构造、有参构造等

  1. HashMap

ke-map

Colection 啊、泛型啊啥的,too long no see

等碰到了再看吧

相关内容

热门资讯

一大批政策和资金,提前来了! 岁末年初,政策窗口期至关重要。 中央经济工作会议部署落定,国家发展改革委已率先行动,抢抓时间窗口,主...
检察公益诉讼破解劳动者个体“不... 本报记者 卢越 阅读提示 日前,北京市人民检察院与北京市总工会以“检察公益诉讼护航劳动者权益”为主题...
原创 造... 1月1日消息,导致英国重量级拳王约书亚受伤的严重车祸有了新的进展。最新报道称,车祸时驾驶SUV车辆的...
让更多消费者和经营主体享受政策... 推动2026年“两新”政策平稳有序实施 让更多消费者和经营主体享受政策红利 中央纪委国家监委网站 韩...
如何从刑事律师推荐排行榜中选到... 刑事律师的重要性 在法律领域,刑事律师扮演着关键角色。当个人或企业面临刑事指控时,专业刑事律师的帮助...
征兵政策解读之三:入伍流程篇 一、义务兵 义务兵应征入伍基本流程通常包括:网上报名、初检初考、体格检查、政治考核、预定新兵、役前教...
一图读懂:完善幼儿园收费政策!... 来源 | 国家发展改革委微信,转自中国政府网微信 近日,国家发展改革委、教育部、财政部联合印发《关于...
2026年“两新”“两重”政策... 2026年“两新”(大规模设备更新和消费品以旧换新)政策有哪些新变化?当前,“两重”建设(国家重大战...
2026年四川汽车、家电、数码... 12月31日,四川省商务厅发布了《四川省商务厅关于2026年四川省汽车以旧换新补贴的公告》《四川省商...
仁盈律所代理投资者诉世纪星源(... 2025年10月,上海仁盈律师事务所张晏维律师团队在证券维权领域再立新功,代理的“投资者诉世纪星源(...