J2SE基础:9.集合一

1:集合:

集合的概念:数据容器(与数组类似)。容器比较适合装对象。

2:集合与数组的优缺点:

数组存取效率高,使用时要求容量大小固定;适合基本数据类型的存取;

集合存取效率上有一定的牺牲,集合容量大小可以根据实际需要改变,

提供丰富的存和取对象的方法,适合成为对象的“容器”

3:集合框架体系图

接口的图标

类的图标

继承的图标:实心箭头

实现的图标:虚线

4:集合框架的分类:

A:集合(SET)

B:列表(List)

C:键值对(Map)

D:队列(Queue)

Collection的方法

add(添加)

remove(删除)

size(大小)

clear(清空)

Iterator(迭代器)

toArray(转成数组)

A:集合SET

特点:(1)不重复(逻辑相等,equals);

(2)可以加一个NULL元素。

HashSet:

特点:(1):哈希算法实现,无序的。

(2):不是线程同步的。

由于HashSet中对象是不重复的。因此要重写对象的equals方法。由于不重复,因此往集合中

加入对象时,要一个个的比较是否重复。效率比较低。

因此,往集合中加元素时,先比较对象的hashCode是否在集合存在。

如果不存在:直接添加

如果存在:再比较两个以象是否equals,如果equals(),对象重复,不添加。

如果不equals(),对象不重复。

LinkedHashSet

特点:(1):底层机制链表方式实现。

(2):元素是有序的。(是指添加进去的元素有序,不是指对象之间的顺序)

(3):不是线程同步的。

(4):由于是用链表实现,因此增删改对象比较容易。查找比较慢。

CopyOnWriteArraySet

特点:(1):底层机制数组方式实现。

(2):元素是有序的。(是指添加进去的元素有序,不是指对象之间的顺序)

(3):它是线程同步的。

(4):由于是用数组实现,因此查找比较快。增删改比较慢。

线程同步与非线程同步:

线程同步:当多个线程同时访问一个资源时,只能有一个线程访问该资源。因此效率比较

慢。但数据对于多个线程来说是同步的。

非线程同步:当多个线程同时访问一个资源时,多个线程都可以访问该资源。因此效率比较

快,但会造成多个数据看到的数据不同步。

TreeSet

特点:元素有序的(对象之间有序)

J2SE基础:9.集合一,布布扣,bubuko.com

时间: 2024-10-26 16:05:20

J2SE基础:9.集合一的相关文章

J2SE基础:1.类和对象基础

什么是对象 在Java语言,所有的人,事物或者模块都是一个对象. 相同的对象具有一些相同的特性. 狗,猫,蛇3个对象(动物的对象) 苹果,梨,桔子3个对象(水果的对象) 什么是类 可以将现实生活中的对象经过抽象 这种抽象数据类型称为类. 动物类(Animal) 水果类(Fruit) 类和对象的关系 类是对象的模板(抽象化表示),对象是类的实例化(具体化的展现) 类的组成结构 Java是纯面向对象(除了8种基本数据类型) 而对象是从类产生的.因此类是组成Java程序最基本也是最核心的 元素. 变量

J2SE基础:11.异常处理

1:异常的概念: 异常是程序在执行时发生的事件(异常发生在运行期间). 程序出现错误,打断原本的执行流程. 2:Java中处理异常. 在Java中,异常被封装成一个对象.(属性和方法) 3:异常产生 在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象. 生成的异常对象将传递给Java运行时系统,这一异常的产生和提交过程称 为引发异常. 4:异常的分类 异常的根类(throwable) 错误:Error(程序无法处理的错误) 异常:Exception(可以处理的错误.程序可以捕获

J2SE基础:2.对象的创建与使用

1:参数传递的值传递与引用传递 A:值传递:基本数据类型传递都是值传递 B:引用传递(地址传递):对象数据类型都是引用传递. 2:类变量与成员变量(实例变量,对象变量) 类变量:通过类名调用,类变量被所有的实例共享. final static int MAX = 20;//Java中定义常量 对象变量:通过对象调用(对象必须new出来). 3:类方法与成员方法(实例方法,对象方法) 类方法:通过类名调用,在类方法中不能使用this关键字. 因为this代表当前对象. 成员方法:通过对象调用(对象

J2SE基础:10集合2

2:列表(List) 特点: (1):有序的(插入的顺序有序),元素有索引值. (2):允许重复. set/get/listIterator/subList ArrayList 特点:(1):底层数组方式实现. (2):元素是有序的.(是指添加进去的元素有序,不是指对象之间的顺序) (3):不是线程同步的. (4):由于是用数组实现,查找比较快. 循环: 迭代器 For循环 双向迭代器 LinkedList 特点:(1):底层机制链表方式实现. (2):元素是有序的.(是指添加进去的元素有序,不

J2SE基础:4.面向对象的特性

面向对象的特性 封装 继承多态 封装: 定义: 通过对象的封装,实现了模块化和信息隐藏. 通过对类的成员施以一定的访问权限,实现了类中成员 的信息隐藏 注意点: 对象自已该做的一些事情与方法不能交与其它类去实现. 将内部的实现隐藏化.别人不用去关心内部怎么实现. 只要调用方法就可以得想结果. 继承: 继承的特性: A:通过继承可以实现代码的复用.子类可以继承父类中的变量及方法. 前提:父类访问修饰符的控制对继承的影响: 父类私有的属性与方法不能被子类继承. Default:同一包中可以访问. B

J2SE基础:8.系统常用类二

1:基础数据与封装类型之间的转型 A:基础数据类型--->封装类型(对象类型) Boolean boolean_1 = new Boolean(true); byte ---->Byte short---->Short char---->Character int--->Integer long-->Long float-->Float double-->Double B:封装类型--->基础类型 Integer.intValue--->int

Java面试题(1)-J2SE基础

最近在为自己实习准备,看了网上各种面试经验贴,也和身边的小伙伴一起参加了不少牛逼IT企业的面试,这篇文章就将面试遇到的一些比较常见的问题整理一下,给大家一些参考,也为自己整理整理. J2SE基础 1.九种基本数据类型的大小,以及他们的封装类. Java的九种基本数据类型: byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间. short:16位,最大数据存储量是65536,数据范围是-32768~32767之间. int:32位,最大数据存储容量是2的32次方减1,数据

J2SE基础:5.面向对象的特性3

1:抽象方法: 当父类的某个方法都会被子类重写时,那么父类的方法就没有 实现的必要.但必须要声明. 所以这个方法就可以定义抽象方法(只有声明,没有实现). 2:抽象类: 由于抽象方法是不完整的方法,因而抽象方法所属的类也是一个不 完整的类,所以类必须定义成抽象类. 抽象类中可以包含抽象方法和非抽象方法. 3:当一个子类继承抽象类时 子类就必须重写抽象类中的所有的抽象方法. 如果子类不想实现,那么必须将自已也定义一个抽象类. 4:抽象类不能被实例化,只能实例化子类. Animal animal =

J2SE基础:8.系统经常使用类二

1:基础数据与封装类型之间的转型 A:基础数据类型--->封装类型(对象类型) Boolean boolean_1 = new Boolean(true); byte ---->Byte short---->Short char---->Character int--->Integer long-->Long float-->Float double-->Double B:封装类型--->基础类型 Integer.intValue--->int