1.概述
1.1.Java集合框架的由来
1.2.什么是集合框架?
1.3.为什么需要集合框架
1.4.常用的框架接口规范
2.Vector类
2.1.存储原理
2.2.构造方法
2.3.常用方法
3.Stack类
3.1.什么是栈
3.2.栈的构造方法和常用方法
4.ArrayList类
5.LinkedList类
5.1定义
5.2.常用方法

1.概述

1.1.Java集合框架的由来

刚开始的时候java只有Vetor,Stack,Hashtable这些同容器类用来保存大量的对象。
容器类是可以存储多个数据的类,数组也是一个容器,但是数组有一定的缺陷,所有提出了容器概念
怎么学习集合框架呢?
集合框架是非常简单,但是又非常重要的一个对象。
学习集合框架只要记住:拿来主义

1.2.什么是集合框架?

集合框架是为了表示和操作而规定集合而规定的一种统一的标准的体系结构。
任何集合框架都要包含三大块内容:
对外的接口
接口的实现
对集合应用的算法(底层都对应这一种数据结构的算法)

1.3.为什么需要集合框架

1.提供功能的复用(java.util包)
2.让程序员能专注于开发,而不是数据结构和算法

1.4.常用的框架接口规范

1.集合中存储的对象称之为集合元素
2.常用的集合类
-Set(集):集合中的对象不按特定方式排序,不允许元素重复
-List(列表):集合中的元素按照索引位置排序,不允许元素重复
-Map(映射):集合中的每一个元素都包含一对key和value对象,不允许key对象重复,值对象可以重复

2.Vector类

在Java2.0之前,还没有集合框架的概念,但是要存储多个数据,于是就有了一个Vector类。Vector类底层其实就是一个Object数组,Vector类中的方法是支持同步的。
Vector类提供了实现可增长数组的功能,随着更多元素的加入其中,数组变得更大,在删除一些元素之后,数组就变得小

2.1.存储原理

通过源码分析,发现Vector类中有一个Object[]类型数组,protected Object[] elementData;
1.表面上把数据存储到Vector对象中,其实底层依然是把数据存储到Object数组中的
2.我们发现数组的元素类型是Object类型,意味着集合中能存储任意对象的对象。不要要注意,集合中只能存储对象,不能存储基本数据类型的值。

2.2.构造方法

Vector类提供三种常用构造方法
1.public Vector();

构造一个空向量,默认的数组大小是10

2.public Vector(int Capacity)

用Capacity指定Vector默认容量的大小,由于增加数据导致容量增加时,每次容量会增加一倍

3.public Vector(int Capacity, int capacityIncrement)

Capacity是默认容量大小,capacityIncrement是每次容量增加时的增量值

2.3.常用方法

Vector的常用方法,在其他集合中也大部分是通用的,而常用方法是分成四种的,即:增、删、查、改
1.增加
boolean add(Object e)

将指定元素增加到集合的末尾,等价与addElement()方法

voild add(int index, Object element)

在集合的指定位置插入指定元素

boolean addAll(Collection c)

把一个集合中的元素去全部添加到当前集合中来

注意:add()也可以追加一个集合,但是追加的这个集合是当做一个集合中的一个元素来的,addAll()是把一个集合中的所用元素跟当前集合的所有元素并排,同等位置存放
示例:

 import java.util.Vector;

 /**
* 演示Vector类中的增加方法
* Created by cenyu on 16-11-19.
*/
public class TestVector {
public static void main(String[] args) {
Vector v = new Vector();
v.add("A");
v.add("B");
v.add("C");
System.out.println(v); //[A, B, C]
//将指定元素增加到集合的末尾
v.add("D");
System.out.println(v);//[A, B, C, D]
//在集合的指定位置插入指定元素
v.add(2,"B");
System.out.println(v);//[A, B, B, C, D]
//把一个集合中的元素去全部添加到当前集合中来
Vector v2 = new Vector();
v2.add(1);
v2.add(2);
v2.add(3);
v.addAll(v2);
System.out.println(v);//[A, B, B, C, D, 1, 2, 3]
v.add(v2);
System.out.println(v);//[A, B, B, C, D, 1, 2, 3, [1, 2, 3]]
}
}

2.删除
Object remove(int index)

按下标删除指定位置的元素,返回被删除的那个元素

boolean remove(Object o)

按值删除指定元素

boolean removeAll(Collection c)

从当前集合中移除包含在指定集合 c 中的所有元素

boolean retainAll(Collection c)

在当前集合中只保留和集合c有交集的元素

示例

 import java.util.Vector;

 /**
* 演示Vector类中的删除方法
* Created by cenyu on 16-11-19.
*/
public class TestVector {
public static void main(String[] args) {
Vector v = new Vector();
v.add("A");
v.add("B");
v.add("C");
//在集合的指定位置插入指定元素
v.add(2,"B");
//把一个集合中的元素去全部添加到当前集合中来
Vector v2 = new Vector();
v2.add(1);
v2.add(2);
v2.add(3);
v.add(v2);
System.out.println(v);//[A, B, B, C, [1, 2, 3]] //按下标删除指定位置的元素,返回被删除的那个元素
System.out.println(v.remove(2));//B
//按值删除指定元素
v.remove("C");
System.out.println(v);//[A, B, [1, 2, 3]]
// //在当前集合中只保留和集合v2有交集的元素
// v.remove(v2);
// System.out.println(v);//[A, B]
v.add(1);
v.add(2);
v.retainAll(v2);
System.out.println(v);//[1, 2] }
}

3.查询
int size()

返回当前集合中存储的元素个数

boolean isEmpty()

判断当前集合中元素个数是否为0

Object get(int index)

查询指定索引位置的元素

Object[] toArray()

把集合对象转换为Object数组

4.修改
Object set(int index, Object element)

修改当前集合中指定索引位置的元素,返回被替换的那个旧元素

示例:

 import java.util.Arrays;
import java.util.Vector; /**
* 演示Vector类中的查询和修改方法
* Created by cenyu on 16-11-19.
*/
public class TestVector {
public static void main(String[] args) {
Vector v = new Vector();
v.add("A");
v.add("B");
v.add("C"); //返回当前集合中存储的元素个数
System.out.println(v.size());//3
//判断当前集合中元素个数是否为0
System.out.println(v.isEmpty());//false
//查询指定索引位置的元素
System.out.println(v.get(1));//B
//修改当前集合中指定索引位置的元素,返回被替换的那个旧元素
System.out.println(v.set(0,"B"));//A
System.out.println(v);//[B, B, C]
//把集合对象转换为Object数组
System.out.println(Arrays.toString(v.toArray()));//[B, B, C]
}
}

3.Stack类

3.1.什么是栈

*栈(stack):数据机构的一种,存储特点是:后进先出,Last In First Out.
stack类表示后进先出(LIFO)的对象栈
栈的思想是规定一个底部,所有的数据从顶部进入,然后从顶部获取数据。
栈结构在生活中的体现:
1、QQ消息,A、B、C先后发来消息,后发的在上面显示
2、手枪弹夹的装弹和发射

要来实现栈的存储,底层可以使用数组来存储,也可以使用链表来存储。
该类继承于java.util.Vector

3.2.栈的构造方法和常用方法

栈是一种比较简单的操作,只有一种构造器方法和五种常用操作方法
1.构造器
Stack()

创建一个空堆栈

2.操作方法
1.boolean empty()

测试堆栈是否为空

2.Object peek()

查看堆栈的顶部对象,只是查看不进行任何操作

3.Object pop()

移除堆栈顶部的对象,并返回移除的这个对象

4.Object push()

把一个元素压入堆栈顶部

5.int search(Object o)

返回对象在堆栈中的位置,以1为基数,后进的为1,先进的往后排

示例

 import java.util.Stack;

 /**
* 测试Stack类的方法
* Created by cenyu on 16-11-20.
*/
public class TestStack {
public static void main(String[] args) {
//创建一个空堆栈
Stack s = new Stack();
//测试堆栈是否为空
System.out.println(s.empty()); //true
//把一个元素压入堆栈顶部
s.push("A");
s.push("B");
s.push("C");//C是最后添加的
System.out.println(s.empty());//true
//查看堆栈的顶部对象,只是查看不进行任何操作
System.out.println(s.peek()); //C
//移除堆栈顶部的对象,并返回移除的这个对象
System.out.println(s.pop());//C
System.out.println(s); //[A, B]
//返回对象在堆栈中的位置,以1为基数,后进的为1,先进的往后排
System.out.println(s.search("B"));//
}
}

4.ArrayList类

ArrayList类是Java集合框架出现之后用来取代Vector类的,二者在底层原理上是一模一样的。
区别:
Vector:所有的方法都使用了synchronized修饰符,线程安全但是性能较低,使用与多线程环境
ArrayList:所有的方法都没有synchronized修饰符,线程不安全,但是性能较高
即使在多线程环境下,我们也不使用Vector类:
ArrayList list = Collections.synchronizedList(new ArrayList(……));
常用的方法可以参照Vector

5.LinkedList类

5.1定义

LinkedList类是双向链表,单向队列,双向队列,栈的实现类
LinkedList类实现单向队列和双向队列的接口,自身提供了栈操作的方法,链表的操作方法

5.2.常用方法

在LinkedList类中存在很多方法,但是功能都是相同的,LinkedList表示了很多中数据结构的实现,每一种数据结构的操作名字不同

具体方法转载了一篇文章

第14章 集合框架(1)-List集合的各种类的更多相关文章

  1. Java集合框架概述和集合的遍历

    第三阶段 JAVA常见对象的学习 集合框架概述和集合的遍历 (一) 集合框架的概述 (1) 集合的由来 如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序. 通常,程序 ...

  2. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  3. 【集合框架】Java集合框架综述

    一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...

  4. java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类

    本文关键词: java集合框架  框架设计理念  容器 继承层级结构 继承图 集合框架中的抽象类  主要的实现类 实现类特性   集合框架分类 集合框架并发包 并发实现类 什么是容器? 由一个或多个确 ...

  5. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器

    集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别?                 A:长度区别                  ...

  6. (1)StringBuilder类和StringBuffer类 (2)日期相关的类 (3)集合框架 (4)List集合

    1.StringBuilder类和StringBuffer类(查手册会用即可)1.1 基本概念 由于String类描述的字符串内容无法更改,若程序中出现大量类似的字符串时需要申请独立的内存空间单独保存 ...

  7. 深入理解java集合框架之---------Linked集合 -----构造函数

    linked构造函数 1.LinkedList(): 构造一个空列表的集合 /** * 序列化 */ private static final long serialVersionUID = 1090 ...

  8. 深入理解java集合框架之---------Arraylist集合 -----添加方法

    Arraylist集合 -----添加方法 1.add(E e) 向集合中添加元素 /** * 检查数组容量是否够用 * @param minCapacity */ public void ensur ...

  9. 深入理解java集合框架之---------Arraylist集合 -----构造函数

    ArrayList有三个构造方法 ArrayList有三个常量 1.private transient Object[] elementData (数组); 2.private int size (元 ...

随机推荐

  1. Hadoop多节点集群安装配置

    目录: 1.集群部署介绍 1.1 Hadoop简介 1.2 环境说明 1.3 环境配置 1.4 所需软件 2.SSH无密码验证配置 2.1 SSH基本原理和用法 2.2 配置Master无密码登录所有 ...

  2. 第 31 章 项目实战-PC 端固定布局[4]

    学习要点: 1.热门旅游区 2.标题介绍区 3.旅游项目区 主讲教师:李炎恢 本章主要开始使用学习用 HTML5 和 CSS3 来构建 Web 页面,第一个项目采用 PC 端固定布局来实现. 一.热门 ...

  3. Java04

      0.面向对象(Object Oriented:OO):     0.OOA(面向对象分析) OOD(面向对象的设计) OOP(面向对象编程)     1.是软件开发方法     2.扩展的领域:数 ...

  4. SpringMVC的注解开发入门

    1.Spring MVC框架简介 支持REST风格的URL 添加更多注解,可完全注解驱动 引入HTTP输入输出转换器(HttpMessageConverter) 和数据转换.格式化.验证框架无缝集成 ...

  5. Lind.DDD.Repositories.Redis层介绍

    回到目录 之前已经发生了 大叔之前介绍过关于redis的文章,有缓存,队列,分布式pub/sub,数据集缓存以及仓储redis的实现等等,而今天在Lind.DDD的持久化组件里,redis当然也有一席 ...

  6. 19、ASP.NET MVC入门到精通——Unity

    一.IOC介绍 IOC(Inversion of Control),中文译为控制反转,又称为“依赖注入”(DI =Dependence Injection) IOC的基本概念是:不创建对象,但是描述创 ...

  7. 玩转 H5 下拉上滑动效果

    在APP中我们经常会在页面下拉时看到一些动效,例如下拉图片跟随放大.下拉刷新出现loading动画等,这个交互细节在各个主流APP以及手机原生系统中随处可见,能为APP增添个性亮点. 一.背景 在我们 ...

  8. 安装InfoPath 2013后 SharePoint 2010 出现 “找不到 Microsoft.Office.InfoPath, Version=14.0.0....” 的错误的解决方案

    1. 症状 您的SharePoint 2010的服务器是不是最近一直出现这个错误呢? Could not load file or assembly 'Microsoft.Office.InfoPat ...

  9. MyEclipse 2016 CI 3发布

    JSjet 语法高亮 受够了Eclipse中的JavaScript编码体验?那就来试试MyEclipse 2016 CI 3.JSjet改进了JavaScript编码的语法高亮功能,大大提升了代码的可 ...

  10. ios webview自适应实际内容高度4种方法

    有的时候会碰见类似的苦逼需求, webview自适应实际内容高度 下面有四种方法供使用 方法1:获取webview中scrovllview的contentsize进行设置   1 2 3 4 5 6 ...