文档章节

java类集合详解

z
 zongze30
发布于 2015/02/27 13:19
字数 1218
阅读 20
收藏 0

一、系统简述:

1.集合框架总体结构

   Java中集合类定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口,这三类的区别是

java.util.Set接口及其子类,set提供的是一个无序的集合;

java.util.List接口及其子类,List提供的是一个有序的集合;

java.util.Map接口及其子类,Map提供了一个映射(对应)关系的集合数据结构;

另外,在JDK5中新增了Queue(队列)接口及其子类,提供了于队列的集合体系。每种集合,都可以理解为用来在内存中存放一组对象的某种容器“---就像数组,就像前面我们自己定义的队列。

一、系统简述:

1.集合框架总体结构

   Java中集合类定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口,这三类的区别是

java.util.Set接口及其子类,set提供的是一个无序的集合;

java.util.List接口及其子类,List提供的是一个有序的集合;

java.util.Map接口及其子类,Map提供了一个映射(对应)关系的集合数据结构;

另外,在JDK5中新增了Queue(队列)接口及其子类,提供了于队列的集合体系。每种集合,都可以理解为用来在内存中存放一组对象的某种容器“---就像数组,就像前面我们自己定义的队列。

2.Set接口和List接口

Set 是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。对集中成员的访问和操作是通过集中对象的引用进行的, 所以集中不能有重复对象;而LIst的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有顺序的集是不同的。列 表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。关于实现列表的集合类,是我们日常工作中经常用到的;从类图中可以看到,Set 和List都 是继承了Collection接口的子接口,而这类集合都有自己的实现;

3.java.util.Map接口

现实生活中,我们常会看到这样的一种集合:IP地址与主机名,***号与个人,系统用户用与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。Map是一个接口,有多种具体的实现类,常用的有HashMap和 Hashtable类实现。Map中存入的对象是一对一对的,即每个对象和它的一个名字(键)关联在一起

Map中存放的是两种对象,一种称为key(),一种称为value(),它们在在Map中是一一对应关系,这一对对象又称做Map中的一个Entry()Map中的键不能重复,但值可以重复。

二、详细阐述:

一、概述

    数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struch来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法。

    在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection Framework)。

    Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了。这样就大大提高了编程效率。


二、集合框架的层次结构

Collection是集合接口

|――――Set子接口:无序,不允许重复。

|――――List子接口:有序,可以有重复元素。

区别:Collections是集合类

Set和List对比:

Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。

List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。


Set和List具体子类:

Set

|――――HashSet:以哈希表的形式存放元素,插入删除速度很快。

List

|――――ArrayList:动态数组

|――――LinkedList:链表、队列、堆栈。

Array和java.util.Vector

Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。


本文转载自:http://blog.csdn.net/xuejiaqiang88/article/details/43965905

共有 人打赏支持
z
粉丝 0
博文 7
码字总数 1170
作品 0
石家庄
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
08/08
0
0
【目录导航】JAVA零基础进阶之路

【JAVA零基础入门系列】(已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day6 Java字符串 Day7 Java输入与输出...

MFrank
06/21
0
0
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
07/25
0
0
图说 Java:理解 Java 机制最受欢迎的 8 幅图

世间总是一图胜过千万言,下面的8幅图来自于 Program Creek 的 Java教程 ,目前这是该网站最受欢迎的文章. 希望本文能帮你回顾你已经知道的那些知识。如果图片讲解的不够清晰,你可能需要阅读详...

大数据之路
2013/10/30
0
3
JVM 虚拟机(对象创建,类加载器,执行引擎等),

1.揭开 Java 对象创建的奥秘? 2.class 文件结构详解? 3.详解 Java 类的加载过程? > Java 对象创建,class 文件结构 Java对象模型 。Java对象保存在堆内存中。在内存中,一个Java对象包含三...

desaco
08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[Hive]JsonSerde使用指南

注意: 重要的是每行必须是一个完整的JSON,一个JSON不能跨越多行,也就是说,serde不会对多行的Json有效。 因为这是由Hadoop处理文件的工作方式决定,文件必须是可拆分的,例如,Hadoop将在...

Mr_yul
14分钟前
0
0
54:mysql修改密码|连接mysql|mysql常用命令

1、mysql修改密码: root用户时mysql的超级管理员,默认mysql的密码是空的,直接可以连接上去的,不过这样不安全; 注释:为了方便的使用mysql,需要把mysql加入到环境变量里; #后续自己输入mys...

芬野de博客
21分钟前
0
0
鼠标单击复制粘贴标签中的内容

<span ref="spanContentOne" id="spanContentOne" style="font-size: 14px;">或许不是最亮眼,总比瞎买强一点</span><!--<input type="button" @click="copyClick('1')" value="复制" />-......

帝子兮
26分钟前
0
0
使用axel多线程疯狂下载

在Linux中比较常见见的下载工具是curl和wget,但是下载比较大的文件两者都不支持多线程, 断点续传的作用不见得能发挥到最大。今天介绍一个axel工具,开启多线程疯狂下载。 安装 Fedora/Cen...

linuxprobe16
28分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部