[零基础学JAVA]Java SE应用部分-35.JAVA类集之四

JAVA按以下重要顺序
· 面向对象
· 类集框架
· JDBC
· 文件编程
本季目标
主要讲解以下的内容:
· Collection
· List
· Set
· Map
· Iterator
· ListIteator
· Enumeration
· for…each语句(JDK 1.5的新特性)
· Comparable接口
· 二叉树
1、类集结构
(1)类集的产生目的
类集简单来讲就是一个动态的对象数组,此对象数组可以改变大小,可以任意的实现对象的增加、删除、输出。所有的类集存放java.util包中。
(2)类集的划分
1、存放单值:Collection
2、存放一对值:Map
3、输出:Iterator
(3)类集的具体概念
<1>Collection(只能存放一个值)
|- 主要功能:用于输出使用
|- 子接口:List(允许有重复的元素,而且加入的顺序就是输出的顺序)
    |- 子类:ArrayList,是在Java 2之后推出的,是新的类,是使用异步处理方式,其性能较高
    |- 子类:Vector,是在JDK 1.0的时候就推出,因为是旧的类,有很多List所没有的功能,是使用同步处理方式,其线程安全性较高,会比较慢。使用Vector除了可以使用Iterator输出之外,也可以使用Enumeration进行输出。两者是通用的。Vector子类允许直接使用addElement(Object obj),也是可以向集合中加入元素的。
    |- 自己新增的方法:
        |- 取每一个对象:public Object get(int ind) ;
    |- 子类:Stack(栈)
|- 子接口:Set(不允许有重复元素,重复元素会替换)?如何可以区分重复元素呢? 
    |- 子类:HashSet:是无序列存放
    |- 子类:TreeSet:有序存放,是通过Comparable接口完成的
|- 常用方法:
    |- 增加一个对象:public boolean add(Object obj)
    |- 取得类集的长度:public int size() ;
    |- 判断集合中的内容是否为空:public boolean isEmpty()
    |- 删除一个对象:public boolean remove(Object obj) :就必须牵扯到对象的比较状态。
    |- 实例化Iterator对象:public Iterator iterator() ;
<2>JDK 1.5提供了一个方便的输出操作:for…each语句。
<3>Iterator接口输出是最常见的

|- 常用方法
    |- public boolean hasNext():判断是否有下一个元素
    |- public Object next():取出下一个元素
|- 子接口:ListIterator,可以进行双向输出,只对于List接口有用
    |- 常用方法:具备了Iterator接口中的全部内容
        |- public boolean hasPrevious()
        |- public Object previous() 
<4>Enumeration(在1.5之后也加入、泛型支持哈~)
|- 常用方法:
    |- 判断是否有下一个元素:public boolean hasMoreElements()
    |- 取出元素:public Object element()
5、 Map(存放一对值)
|- 功能:与Collection的功能不一样,Map的主要功能是用于查找使用的。
|- 注意点:
    |- 使用Map操作时,不能直接使用Iterator进行输出。
    |- 而且里面不能有重复key。
    |- 如果非要使用Iterator进行输出,则必须按以下的步骤进行操作:
|- Map --> Set --> Iterator --> Map.Entry --> key与value的分离
|- 常用子类:
    |- HashMap:无序存放,是新的类,是JDK 1.2时推出的,是异步处理,性能较高
    |- Hashtable:是旧的类,是JDK 1.0时推出的,是线程安全的,性能较低
        |- Properties(重点):属性文件操作类
    |- TreeMap:有序存放
|- 常用方法:
    |- 向集合中保存数据:public Object put(Object key,Object value):返回的是value
    |- 从集合中查找数据:public Object get(Object key):根据key查找。
    |- 将Map数据变为Set实例:Set<Map.Entry<K,V>> entrySet()
    |- 将全部的key变为set实例:Set<K> keySet()
    |- 将全部的vlaue变为Collection接口实例:Collection<V> values()
|- Map.Entry:保存key与value
    |- public Object getKey()
    |- public Object getValue()
|- 存放key的注意点:
################Michael分割线####################
2、代码讲解
(11)HashMap
Map的基本应用
image 
如果查到了,则返回具体的值,如果没有查到,则返回null
image
使用Iterator输出Map接口中的内容
image
HashSet:是无序列存放滴~~~
image
将全部的key进行输出
image
image
输出全部的值
image
image
(12)Hashtable
image
image
(13)TreeMap
按key进行排序,本操作中依然使用了Comparable接口。
image
TreeSet:有序存放,是通过Comparable接口完成的
image
(14)Stack
入栈:public Object push(Object obj)
出栈:public Object pop()

注意点:如果此时栈中已经没有内容了,则会出现异常。
image
image
(15)Properties(重点
· 属性操作类,所有的key 与value 都按属性设置,都是字符串。而且此属性文件可以直接保存在文件中,或从文件中读取出来。
设置属性:public Object setProperties(String key,String value)
取得属性:
|- public String getProperty(String key) 根据key读取属性,返回值
|- public String getProperty(String key,String def) :如果没有读到值,则返回def指定的内容。
保存在文件中:
|- 保存成普通文件:public void store(OutputStream out,String comments) throws IOException
|- 保存成XMl文件:public void storeToXML(OutputStream out,String comments) throws IOException
从文件中读取属性:
|- 从普通文件中读取:public void load(InputStream input) throws IOException
|- 从XML文件中读取:public void loadFromXML(InputStream input) throws IOException
image
image
将内容保存成普通文件:
image
image
将内容保存为XML文件:
image
image
从XML文件中把属性读取出来
image
image
(16)Map重要补充
image
image
以上的程序可以通过key找到value。
现在把代码反过来
image
image
代码反过来之后,发现没有得到真正想要的内容,而是返回了null。
image
image
此时如果要通过匿名对象来当作key,找到属性的话,就必须牵扯到Object中的几个方法:
· 对象比较:
· 通过hashCode;
image
image
Java中是通过equals和hashCode方法去确认对象唯一性,可以进行比较。
但是以上的程序需要一点更改,因为不能让所有对象的hashCode方法的返回值都是一样的,所以可以经过一些自己简单的运算。
image
image
一个完整的类最好覆写Object类中的三个方法:
· hashCode
· equals
· toString
(17)额外补充(对象克隆)
就是把对象的内容重新复制一份,复制出一个新的对象
protected Object clone() throws CloneNotSupportedException
克隆方法是一个受保护的方法。所以在其需要对象被克隆的子类中必须扩大权限,否则外部无法看见。
对象所在的类必须实现Cloneable接口
Java程序中常用的有两大标识接口:
· 可序列化:Serializable
· 可克隆:Cloneable
image
image
总结
就是向里面不断加入元素,可以动态的扩充,而且可以有存放单值的,也可以有存放一对值的。
而且在集合中对于排序,使用的是Comparable接口。
实例的模型很重要 —— Hibernate、EJB 3.0。
######################Michael分割线#############################

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Mysql】之视图操作

一、视图实例1-创建视图及查询数据操作 首先&#xff0c;创建三个表&#xff1a;user、course、user_course 表&#xff1a;user CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,account varchar(200) NOT NULL,name varchar(200) NOT NULL,address varchar(500) DEFA…

TERMINAL

CListBox常用函数 https://www.cnblogs.com/whzym111/p/6214597.html、 https://blog.csdn.net/foreverhuylee/article/details/24638615 AfxGetApp()->GetMainWnd()和AfxGetMainWnd()的区别 获取的是主线程的窗口句柄。 AfxGetMainWnd()获取的是所在线程的窗口句柄。 在…

可在单片机上运行的简易图形库

来源&#xff1a;电子森林&#xff0c;排版&#xff1a;晓宇微信公众号&#xff1a;芯片之家&#xff08;ID&#xff1a;chiphome-dy&#xff09;发现一个网站 - http://www.technoblogy.com/&#xff0c;基本都是关于用ATtiny单片机做各种创意设计的&#xff0c;非常适合初学单…

欧拉回路 欧拉路径

欧拉路径&#xff08;瞎&#xff09;定义 : 如果有一条路径使得能够走完所有的边且每一条边经过有且只有一次&#xff0c;这样的路径叫做欧拉路径 欧拉回路定义 : 如果有从起点出发最后回到起点的一条路径使得能够走完所有的边且每条边经过有且只有一次&#xff0c;称其为欧拉回…

MD5函数

用md5函数 https://blog.csdn.net/whatday/article/details/8024355 MD5算法原理 https://www.cnblogs.com/hjgods/p/3998570.html 其他方法 https://blog.csdn.net/wudishine/article/details/42466831

MMU所起的作用

MMU所起的作用 一、名词解释 ①逻辑地址&#xff08;虚拟地址&#xff09; 用户程序经编译、链接以后形成的每条指令或数据单元的地址&#xff0c;这些地址都是相对于某个基地址来编制的。 ②逻辑地址空间 某个用户程序的虚拟地址的集合。 ③物理地址&#xff08;绝对地址…

终于搞清楚开漏输出和推挽输出这个鬼东西

先说下推挽输出&#xff0c;简单的说&#xff0c;就是想输出高电平&#xff0c;就输出高电平&#xff0c;想输出低电平就输出低电平。推挽电路上面是NPN三极管&#xff0c;下面是PNP三极管&#xff0c;请注意输入端和输出端的波形。下面是输入波形当输入为正时&#xff0c;上面…

被称为“C#圣经”的权威著作!

媒体评论 “哇&#xff0c;这本书太棒了&#xff01;对.NET 3.5和CLR的阐释非常深入。它已经成为我的头号参考书。强烈推荐给所有.NET程序员。” ——Jeff Wilcox&#xff0c;微软.NET开发团队资深工程师 “Troelsen大师王者归来了&#xff01;C#程序员分为两类&#xff1a;读…

Dojo API中文 Dojo内容模块概览,初学者

官网&#xff1a;http://dojotoolkit.org/reference-guide/1.10/dojo/index.html#dojo-dojo的翻译 dojo 内容&#xff1a; dojo dojo/dojodojo/_baseAreas of Functionalitydojo是dojo工具箱的基础包。有时被称为“核心”&#xff0c;它包含了最重要的一般适用的软件包和模块。…

分享一篇很不错的CMake入门文章,值得收藏细读!

https://www.hahack.com/codes/cmake/▌什么是 CMake?你或许听过好几种 Make 工具&#xff0c;例如 GNU Make &#xff0c;QT 的 qmake &#xff0c;微软的 MS nmake&#xff0c;BSD Make&#xff08;pmake&#xff09;&#xff0c;Makepp&#xff0c;等等。这些 Make 工具遵循…

CMapStringToPtr::SetAt\CAsyncSocket

CMapStringToPtr::SetAt CMapStringToOb::SetAt 将元素插入到映射;如果找到匹配项&#xff0c;将替换现有元素。 主要方法要在地图中插入元素。 void SetAt( LPCTSTR key, CObject* newValue);参数 key 指定为新元素的键的字符串。 newValue 指定CObject是新元素的值的指针。…

自我鼓励

每一个优秀的人&#xff0c;都有一段沉默的时光&#xff0c;那一段时光&#xff0c;是付出了很多努力&#xff0c;忍受了很多的孤独和寂寞&#xff0c;不抱怨不诉苦&#xff0c;只有自己知道&#xff0c;而当日后说起时&#xff0c;连自己都能被感动的日子。

例用C# 变更文件夹时间

想变更文件夹的时间.以前做了一个软件.是变更文件的时间,应用了C# API.这次和上一次相同,用Form来通过外部对时间进行确认.确认后应用C#中,System.IO ->Directory->SetCreationTime 来对时间进行变更.以下是C#应用的例子.基本相同.但是,不要忘记小问题,下面的例子的命名空…

Linux 30岁,这些年经历了什么?

3月19日&#xff0c;Linux基金会在Twitter上发布推文宣布&#xff0c;其小企鹅的标志“Tux”已经30周岁了&#xff0c;还为其设计了一系列的庆祝海报&#xff0c;以便大家转发分享。虽然离Linux的生日还有一段时间&#xff0c;但是今年Linux基金会已经提前先帮小企鹅“Tux”过生…

用CSS画基本图形

用CSS画基本图形 1、正方形 代码如下&#xff1a; #square { width: 100px; height: 100px; background: red; } 2、长方形 代码如下:#rectangle { width: 200px; height: 100px; background: red; } 3、圆形 代码如下:#circle { width: 100px; height: 100px; …

输出函数

C语言中基本的输入输出函数有&#xff1a; putchar ():把变量中的一个字符常量输出到显示器屏幕上; getchar ();从键盘上输入一个字符常量,此常量就是该函数的值; printf ();把键盘中的各类数据,加以格式控制输出到显示器屏幕上; scanf ();从键盘上输入各类数据,并存放到程…

人格魅力的六法宝

人格魅力的六法宝 1、学会沉默 沉默是一种温柔&#xff0c;一种甜甜的爱心&#xff0c;一种东方的冰清玉洁的美丽&#xff1b;沉默是一种力度&#xff0c;一种坚韧&#xff0c;一种成竹在胸的自信和威仪。在回答某一具体问题时&#xff0c;沉默是你最好的回答。 2、学会微笑 微…

【模板】LCA

最近公共祖先LCA 1 #include<bits/stdc.h>2 #define MAX 100000013 4 using namespace std;5 namespace edge_and_question{6 int tot,q_tot;7 int head[MAX],q_head[MAX];8 9 struct data{ 10 int to; 11 int nxt; 12 int lca;…

手撸双链表,图解

C语言&#xff0c;链表C实现单向链表深入理解Linux内核链表跟单链表不同&#xff0c;双链表的节点包含两个指针&#xff0c;一个指针指向上一个元素&#xff0c;一个指针指向下一个元素。▌如下图学习数据结构的时候&#xff0c;要像认识一个人一样&#xff0c;要了解这个人有什…

VS建lUML画类图

https://blog.csdn.net/caoshangpa/article/details/79797849