文档章节

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
Java程序员从笨鸟到菜鸟全部博客目录【2012年十一月七日更新】

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 大学上了一年半,接触java也一年半了,虽然中间也有其他东西的学习,但是还是以java为主路线,想想这一年半,...

长平狐
2012/11/12
103
0
大数据开发培训:0基础学习Java编程语言有哪些知识点?

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

加米谷大数据
07/25
0
0
Java程序员从笨鸟到菜鸟全部博客目录【2012年十一月七日更新】

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 大学上了一年半,接触java也一年半了,虽然中间也有其他东西的学习,但是还是以java为主路线,想想这一年半,...

长平狐
2012/11/12
112
0

没有更多内容

加载失败,请刷新页面

加载更多

Eos如何删除钱包

在使用Eos的keosd钱包软件时,如果要删除EOS中指定名称的钱包,最简单的办法是直接删除钱包文件,不过在删除钱包之前,需要先停止钱包软件的运行。 学习EOS应用开发要选这个:【EOS智能合约与...

geek12345
8分钟前
0
0
js操作时间

获取当前时间 function getSystemDate(){ var systemDate = new Date(); // 获取当年 var year = systemDate.getFullYear(); // 获取当月 (月+1是因为js中......

简心
14分钟前
1
0
区块链开发教程推荐

区块链的重要性已经毋庸置疑,但对大多数跃跃欲试的开发者而言,去中心化思想、非对称加密、共识算法等技术点的理解和运用,都是入门区块链开发的挑战。合适的区块链开发教程可以极大地缩短区...

笔阁
15分钟前
0
0
菜单menuView总结

1、FTPopOverMenu

_____1____
26分钟前
3
0
MyEclipse教程:Web开发——部署和测试Web项目

MyEclipse 在线订购年终抄底促销!火爆开抢>> MyEclipse最新版下载 本教程向用户展示了使用关联的Web项目创建Web片段项目的机制。用户还可以获得要检查的示例项目。在本教程中,用户将学习如...

电池盒
41分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部