Java 迭代器 工具类
迭代器:Iterator接口
//获取集合中的对象
Iterator<E> iterator()
interface Iterator
{
boolean hasNext();
Object next();
}
//遍历 Iterator ite = col.iterator();
while(ite.hasNext())
{
//获得一个对象
Object obj = ite.next();
System.out.println(obj);
}
for(int i = 0;i<col.size();i++)
{ } for(Iterator ite = col.iterator();ites.hasNext());)
{ }
集合:Collection接口
可以存储不同类型的对象,而且随着存储的对象的增加容量自动扩大
Collection:
**iterator():获取集合中的对象
--List:
存储的对象是有序的
集合中对象的顺序和添加对象的顺序是一致的,可以重复的
List特有的方法都是可以操作下标的方法
--ArrayList:
底层使用的数据结构是数组
线程不安全的
查找速度快,增删速度慢
--LinkedList:
底层使用的数据结构是链表
线程不安全的
查找速度慢,增删速度快
--Vector:
底层使用的数据结构是数组
线程安全的(被ArrayList替代)
查找速度快,增删速度慢,被ArrayList替代
--Set:
存储的对象是无序的,不可重复的
--HashSet:
底层使用的数据结构是哈希表
线程不安全
--TreeSet:
底层使用的数据结构是二叉树,可以排序
线程不安全
Vector: 动态数组
早期使用Enumeration接口进行枚举
Enumeration e = v.elements(); while(e.hasMoreElements())
{
Object obj = e.nextElements();
System.out.println(obj);
}
LinkedList:
| jdk1.5 | jdk1.6之后 |
|
addFirst addLast |
offerFirst offerLast |
|
getFirst:获取的元素不存在出现NoSuchElementException getLast |
peekFirst:获取的元素不存在返回null peekLast |
|
removeFirst removeLast |
linkFirst linkLast |
ArrayList:
1 去掉集合中重复的对象 新建一个list2
遍历旧集合
如果list2中不包含这个对象,添加
contains(obj)
如果list2中包含,不添加
2 contains判断是否包含某个对象的依据?
依据boolean equals(Object obj)方法的返回值
3 直接输出List<Class>的话,输出的是Class的hash值
解决:
在class中重写toString():
public String toString()
{
return ...;
}
4 去掉List<class>中相同内容的class
在class中重写equals()
public boolean equals(Object obj)
{
if(!(obj instanceof Student))//如果obj不是Student类型
throws new RuntimeException("类型错误");
Student stu = (Student)obj;
return this.age == stu.age && this.name.equals(stu.name);
}
HashSet:
1 在使用add方法添加对象时就保证了对象的唯一
2 HashSet无序的原因
数据结构是哈希表,根据哈希算法得到位置,导致的无序
3 HashSet保证对象唯一的方式
在添加对象时,先比较得到对象的hash值和集合中对象的hash值分别进行比较 int hashCode()
如果和所有对象的hash值都不相同,将对象直接添加到集合
boolean equals()
如果相同,使用equals()方法比较内存地址是否相同
如果相同,认为是同一对象,不添加
如果不同,认为是不同的对象,加入集合
4 去掉Hash<class>中相同内容的class
在class中重写hashCode 和 equals方法
public int hashCode()
{
return name.hashCode() + age * 33;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Student))//如果obj不是Student类型
throws new RuntimeException("类型错误");
Student stu = (Student)obj;
return this.age = stu.age && this.name.equals(stu.name);
}
TreeSet:
1 在使用add方法添加对象时会对添加的对象进行排序
排序方式一:
集合中对象所属的类实现了Comparable接口中的compareTo()方法
排序方式二:
自定义排序方法 2 TreeSet保证对象唯一的方式:
集合中对象所属的类实现了Comparable接口中的compareTo()方法
3 去掉TreeSet<class>中相同内容的class
在class中重写compareTo()
public int compareTo(Object obj)
{
if(!(obj instanceof Student))//如果obj不是Student类型
throws new RuntimeException("类型错误");
Student stu = (Student)obj;
int num = this.age - stu.age;
return num == 0 ? this.name.compatrTo(stu.name) : num;
}
Java 迭代器 工具类的更多相关文章
- Java Properties工具类详解
1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- Java并发工具类 - CountDownLatch
Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...
- MinerUtil.java 爬虫工具类
MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...
- MinerDB.java 数据库工具类
MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...
- 小记Java时间工具类
小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...
- Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie
Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
随机推荐
- tomcat部署和启动2
catalina run 启动服务器后,按下CTRL+C,停止服务器,选择"y",退回到正常命令行. catalina stop
- git中的标签
/*游戏或者运动才能让我短暂的忘记心痛,现如今感觉学习比游戏和运动还重要——曾少锋*/ 1.创建标签: 对于标签来说大家都很熟悉,简单说就是将一个很长的门牌号用另外一个名字来取代,并且好记. 其实利 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 activation-group& dialect& date-effective
转载至:https://blog.csdn.net/wo541075754/article/details/75511887 activation-group 该属性将若干个规则划分成一个组,统一命名 ...
- day31 python学习 并发编程之多进程理论部分
一 什么是进程 进程:正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 举例(单核+多道,实现多个进程的并发执行): 二 进程与程序的区别 程序仅仅只是一堆代码而已,而进程指的是程序的运行 ...
- ZH奶酪:Python 中缀表达式转换后缀表达式
实现一个可以处理加减乘数运算的中缀表达式转换后缀表达式的程序: 一个输入中缀表达式inOrder 一个输出池pool 一个缓存栈stack 从前至后逐字读取inOrder 首先看一下不包含括号的: ( ...
- 作为一名IT从业者,你在工作和学习中,遇到哪些问题
版权声明:襄阳雷哥的版权声明 https://blog.csdn.net/FansUnion/article/details/28448975 大家都是IT从业者,遇到的问题多少与类似. 假设能把这些 ...
- WAJUEJI which home strong!nyoj
WAJUEJI which home strong! 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 在一个山沟里,姐弟俩同时考上了大学.但由于家里拮据,所以这并不是 ...
- python 函数参数的传递(参数带星号的说明) 元组传递 字典传递
python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要 ...
- MapReduce – 基本思路之推荐引擎
理解MapReduce关键两个步骤: 首先是构想出结构的数据结构,这种数据结构可以支撑你的业务分析使用:是要理解这种模式的处理元素. 第二步,分析原始数据的结构是怎样的: 第三步,基于原始数据结构以及 ...
- 后台调用前台JS(查看客户端IE版本)
1.前端代码 </form> //注意放在form下面<script> function readRegedit() { var obj = n ...