J2SE基础:10集合2

2:列表(List)

特点:

(1):有序的(插入的顺序有序),元素有索引值。

(2):允许重复。

set/get/listIterator/subList

ArrayList

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

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

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

(4):由于是用数组实现,查找比较快。

循环:

迭代器

For循环

双向迭代器

LinkedList

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

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

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

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

CopyOnWriteArrayList

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

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

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

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

List中的subList方法

subList也会出现快速失败异常。

解决方法:重新用subList截取的集合视图构建一个新的List即可。

List list = new ArrayList();

List list2 = list.subList(3,5);

list.removeAll(list2);

List list = new ArrayList();

List list2 = new ArrayList(list.subList(3,5));

list.removeAll(list2);

Stack(数据结构)

(1):有序的(插入的顺序有序),元素有索引值。

(2):允许重复。

(3):数据先进后出。

3:映射(Map)

特点:

(1):键值对的数据对象。键不能重复。(键重复的话,后面添加的覆盖前面)

一个键对应一个值。

HashMap

(1):底层以哈希算法实现

(2):允许一个NULL键,允许多个NULL值。

(3):无序

(4):不是线程同步。

LinkedHashMap

(1):底层以链表算法实现

(2):允许一个NULL键,允许多个NULL值。

(3):有序(添加的顺序有序)

(4):不是线程同步。

存值:put(key,value);

取值: value = get(key)

迭代Map

A:使用KeySet(返回所有键的集合,循环键的集合,取出每一个键,再通过键取值)。

B:使用values(返回所有值的集合),只能获取值(值可以重复,所以不能通过值获取键)

C:使用entrySet(返回键值对的集合)。集合中的每一个元素都是一个Map.entry实体对象。

4:队列(Queue)

特点:

(1):与Stack一样,队列是一种数据结构。先进先出的特点。

添加:offer

删除:remove

获取队列元素 poll

单向队列:Queue queue = new LinkedList();

双向队列:LinkedList queue = new LinkedList();//这样双向队列可以操作队首与队尾。

5:老的一些集合框架类

特点:

全部都是线程安全的。

Vector

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

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

(3):是线程同步的。

(4):由于是用数组实现,查找比较快。

HashTable

(1):底层以哈希算法实现

(2):不允许NULL键,不允许NULL值。

(3):无序

(4):线程同步。

Enumeration

老的迭代器。没有提供remove元素的方法。(因为老集合都是线程安全的).

集合的工具类:

Arrays:用于操作数组的工具类。对于数组的排序,添加,查找。

Collections:用于操作集合的工具类。对于集合的排序,添加,查找,比较等。

集合之间的相互转换

数组转List

数组转SET

List转数组

Set转数组

List转SET

J2SE基础:10集合2

时间: 2024-11-06 12:08:10

J2SE基础:10集合2的相关文章

Java面试题(1)-J2SE基础

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

J2SE基础:9.集合一

1:集合: 集合的概念:数据容器(与数组类似).容器比较适合装对象. 2:集合与数组的优缺点: 数组存取效率高,使用时要求容量大小固定:适合基本数据类型的存取: 集合存取效率上有一定的牺牲,集合容量大小可以根据实际需要改变, 提供丰富的存和取对象的方法,适合成为对象的"容器" 3:集合框架体系图 接口的图标 类的图标 继承的图标:实心箭头 实现的图标:虚线 4:集合框架的分类: A:集合(SET) B:列表(List) C:键值对(Map) D:队列(Queue) Collection

Java基础10 接口的继承与抽象类(转载)

接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface: interface Cup{    void addWater(int w);    void drinkWater(int w);} 我们在继承Cup的基础上,定义一个新的有刻度的杯子的接口,MetricCup 接口如下: interface MetricCup extends Cup{    int WaterContent

java基础之集合List-ArrayList、LinkedList、Vector的区别

PS:本篇博客主要参考jdk的底层源码,而非自己动手写代码. 请问ArrayList.LinkedList.Vector的区别 ①ArrayList底层实际上是采用数组实现的(并且该数组的类型的Object类型的) ②如果jdk6,采用Array.copyOf()方法来生成一个新的数组,如果是jdk5,采用的是System.arraycopy()方法(当添加的数据量大于数组的长度时候) ③List list = newArrayList()时,底层会生成一个长度为10的数组来存放对象 ④Arra

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

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

J2SE基础:11.异常处理

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

【C++基础 10】四种cast转换的区别

简介 (1)c风格的转换 (T)expression; (2)c++风格的四种转换 static_cast<T>(expression); dynamic_cast<T>(expression); reinterpret_cast<T>(expression); const_cast<T>(expression); 1. c风格转换 int a = 1; double d = (double)a;//c风格转换 一般许多书本会建议使用c++提供的四种类型转换

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

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

java基础之集合Set

1.集合 当向集合Set中增加对象时,首先集合计算要增加对象的hashcode,根据该值得到一个位置用来存放当前的对象,当在该位置没有一个对象存在的时候,集合set认为该对象在集合中不存在,直接增加进去.如果在该位置有一个对象存在,接着将准备增加到集合中的的对象与该位置上的对象进行equals比较,若返回false,在进行一次散列,将该对象放到散列后计算出的新地址.若返回true,不会再将该对象增加到集合中 2.当重写equals方法时,必须要重写hashcode方法 如果一个类的两个对象,使用