*面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。

*数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。

*集合类的特点:集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

集合框架图

1、Collection (集合的最大接口)继承关系

  ——List 可以存放重复的内容

  ——Set  不能存放重复的内容,所以的重复内容靠hashCode()和equals()两个方法区分

  ——Queue  队列接口

  ——SortedSet  可以对集合中的数据进行排序

Collection定义了集合框架的共性功能。
1,添加
add(e);
addAll(collection);

2,删除
remove(e);
removeAll(collection);
clear();

3,判断。
contains(e);
isEmpty();

4,获取
iterator();
size();

5,获取交集。
retainAll();

6,集合变数组。
toArray();

*add方法的参数类型是Object。以便于接收任意类型对象。

*集合中存储的都是对象的引用(地址)

2、List的常用子类

List:
特有方法。凡是可以操作角标的方法都是该体系特有的方法。


add(index,element);
addAll(index,Collection);


remove(index);


set(index,element);

get(index):
subList(from,to);
listIterator();
int indexOf(obj):获取指定元素的位置。
ListIterator listIterator();

——ArrayList   线程不安全,查询速度快

——Vector  线程安全,但速度慢,已被ArrayList替代

——LinkedList  链表结果,增删速度快

4、Set接口

Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
|——HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
  HashSet是如何保证元素唯一性的呢?
  是通过元素的两个方法,hashCode和equals来完成。
  如果元素的HashCode值相同,才会判断equals是否为true。
  如果元素的hashcode值不同,不会调用equals。

  注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。

——TreeSet:

有序的存放:TreeSet  线程不安全,可以对Set集合中的元素进行排序

通过compareTo或者compare方法来保证元素的唯一性,元素以二叉树的形式存放。

5、Object类

*在实际开发中经常会碰到区分同一对象的问题,一个完整的类最好覆写Object类的hashCode()、equals()、toString()三个方法。

6、集合的输出

——4种常见的输出方式

  ——Iterator: 迭代输出,使用最多的输出方式

  ——ListIterator: Iterator的子接口,专门用于输出List中的内容

  ——Enumeration

  ——foreach

在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConcurrentModificationException异常。

所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的,
只能对元素进行判断,取出,删除的操作,
如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。

该接口只能通过List集合的listIterator方法获取。

7、Map接口

*Correction、Set、List接口都属于单值的操作,而Map中的每个元素都使用key——>value的形式存储在集合中。

Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
1,添加。
put(K key, V value)
putAll(Map<? extends K,? extends V> m)

2,删除。
clear()
remove(Object key)

3,判断。
containsValue(Object value)
containsKey(Object key)
isEmpty()

4,获取。
get(Object key)
size()
values()

entrySet()
keySet()

8、Map接口的常用子类

Map
|HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
|–TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。

9、集合工具类

Collections:集合框架的工具类。里面定义的都是静态方法。

Collections和Collection有什么区别?
Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。
它有两个常用的子接口,
List:对元素都有定义索引。有序的。可以重复元素。
Set:不可以重复元素。无序。

Collections是集合框架中的一个工具类。该类中的方法都是静态的
提供的方法中有可以对list集合进行排序,二分查找等方法。
通常常用的集合都是线程不安全的。因为要提高效率。
如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。

            </div>

java集合复习笔记-java集合继承关系图相关推荐

  1. Java绘图之AWT中的继承关系图

  2. java集合类继承关系图_java集合继承关系图

    面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的,数组中可以存储基 ...

  3. java声明像素的继承_15、Java语言的类间的继承关系是

    [判断题]中心原子中的几个原子轨道杂化时,必形成数目相同的杂化轨道. [填空题]3.在JAVA语言中,每个英文字符占 个字节,每个中文汉字占( )个字节. [填空题]在Java语言中,使用______ ...

  4. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  5. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  6. java 字节码查看_一种查看java字节码时显示方法调用关系图的方法与流程

    本发明涉及一种代码逻辑分析方法,具体涉及一种查看java字节码时显示方法调用关系图的方法. 背景技术: 目前软件反编译领域有不少对可执行文件进行反编译的工具如IDA,也有对Java代码生成的中间码文件 ...

  7. 计网复习笔记【附思维导图】——【2】应用层

    计网复习笔记[附思维导图]--[2]应用层 计网 应用层 2.1 应用层协议原理 位置 应用层协议含义 应用层协议类型 网络应用程序架构 进程通信 网络应用需要的运输层服务 Internet提供的运输 ...

  8. C++版数据结构继承关系图

    文章目录 1 C++版数据结构继承关系图 1 C++版数据结构继承关系图 http://www.plantuml.com/plantuml/png/RP0nJaCn38Ptd-AfUs_0K4JPAW ...

  9. android 中组件继承关系图,一目了然

    View继承关系图 Adapter适配器继承关系图 Activity继承关系图

  10. JS面向对象——Object对象的方法补充、原型继承关系图

    一.Object.create() 这个方法用于创建一个新对象.被创建的对象的__proto__指向create函数第一个参数的原型对象prototype,在创建新对象时可以通过create函数第二个 ...

最新文章

  1. SBO系统中销售订单日志的跟踪统计思路分析
  2. Python基础高级用法,必须要掌握的知识点
  3. java程序错误类型及异常处理
  4. 107. 二叉树的层序遍历 II and 102. 二叉树的层序遍历 023(BFS模板题打两道)
  5. 解决margin塌陷的问题_解决margin塌陷与margin合并(margin)清除浮动问题
  6. php 链接远程oracle,PHP连接远程oracle输出数据
  7. java web类名_带有Java的Selenium Webdriver:使用一个命令定位具有多个类名的元素
  8. 不得不说的wepapi 优化
  9. hadoop 依赖式job_每天一学:一个轻量级分布式任务调度框架 XXL-JOB
  10. django css,Django表单中的CSS样式
  11. 运维小白死磕的专业术语,你真的理解透了吗?
  12. java 线程等待_代码分析Java中线程的等待与唤醒
  13. 纯CSS3实现兔斯基简单害羞表情
  14. ARFoundation系列讲解-教程目录
  15. Windows自带集成工具对ISO镜像是否源于官方网站的验证
  16. Mybatis学习笔记2-配置文件解析
  17. js 异步 回调函数
  18. 苹果刷机有好处和坏处_观察 | iTools推越狱助手 欲扩张苹果市场版图
  19. [论文阅读笔记01]Neural Architectures for Nested NER through Linearization
  20. Nosql初探(voldemort)

热门文章

  1. EditText有焦点(focusable为true)阻止输入法弹出
  2. HDU-1042 N!
  3. 如何解决NDK toolchains出现ABI mips64el-linux-android无法编译问题
  4. element ui输入地内容明明符合规则还是校验报错
  5. java检测按键,java-me – 如何以LWUIT形式检测按键事件?
  6. pandas内置数据集_如何用pandas划分数据集实现训练集和测试集
  7. python 文件 解析ddl_BKM ? 35期 — Python解析ANSYS文件
  8. 光滑噪声数据常用的方法_数据挖掘部分课后习题
  9. 前端调试debugf_前端应该掌握的这些Debug技巧,能够快速提升你的前端开发能力...
  10. c函数 postgres_发个C语言连接Postgresql程序