java基础知识5--集合类(Set,List,Map)和迭代器Iterator的使用
写的非常棒的一篇总结: http://blog.csdn.net/speedme/article/details/22398395#t1

下面主要看各个集合如何使用迭代器Iterator获取元素:
1.list使用迭代器Iterator
public class testArrayList {
public static void main(String args[]) {
f1();
f2();
}
public static void f1(){
List<String> strList = new ArrayList<String>();
for (int i = 0; i < 10; i++)
{
strList.add("string" + i);
}
Iterator<String> iterator = strList.iterator();//list.iterator()
while (iterator.hasNext()) //判断集合中元素是否遍历完毕,如果没有,就返回true
{
if (iterator.next().equals("string3"))
{
iterator.remove(); //iterator.remove()移除的是最近一次iterator.next()所获取的对象
}
}
iterator = strList.iterator();//此步非常重要,删除后要重新定义迭代器
while (iterator.hasNext())
{
System.out.println(iterator.next()); //iterator.next() 返回下一个元素
}
}
public static void f2() {
// 1.向arraylist中添加元素
ArrayList arrayList = new ArrayList();
arrayList.add("wyy"); //arrayList.add
arrayList.add("12");
arrayList.add("huhu");
arrayList.add("897");
System.out.println("输出整个arraylist" + arrayList); //[wyy, 12, huhu, 897]
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
Iterator<String> a = arrayList.iterator();
System.out.println("剩下的元素有:");
while (a.hasNext()) {
if (a.next().equals("12")) {
a.remove();
}
}
//用for循环,可以节约内存,开发时一般使用
for( a = arrayList.iterator();a.hasNext();)//注意,如果判断结果后删除,必须重新对迭代器进行定义,才能取出剩余的数据
{
System.out.println(a.next());
}
}
}
2.set使用迭代器Iterator
package collection; import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet; /**
* Created by wyy on 2017/2/20.
*/
public class SetTest {
public static void main(String[] args) { //set常用的方法:
Set set = new HashSet();
set.add("wq");
set.add("er");
set.add("er");
set.add("gee");
set.add("wdd");
set.add("3242");
System.out.println(set);
Set sortedSet = new TreeSet(set); //添加的元素必须是有效,即可比较排序的,用compareTo
/* sortedSet.add(new SetTest());
报错:collection.SetTest cannot be cast to java.lang.Comparable add的元素必须是可以比较的*/
System.out.println(sortedSet); //[3242, er, gee, wdd, wq],列表的第二次输出已按字母顺序排序。
String a="a";
String b="a";
System.out.println(a.hashCode());//
System.out.println(b.hashCode());// Iterator iterator=set.iterator();//创建一个集合的迭代器,用来取元素
while (iterator.hasNext()){
Object obj = iterator.next();
System.out.println(obj); } }
}
3.map使用迭代器,共有4种方法
package collection; import java.util.*; /**
* Created by wyy on 2017/2/21.
*/
public class MapTest {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<>();
map.put(1,"wo");
map.put(2,"chi");
map.put(3,"xi");
map.put(4,"gua");
System.out.println(map.size());
/*方法1:使用set存储key的值,然后用for循环获取value的值*/
Set<Integer> set=map.keySet();//获取所有key的值
for (int i:set
) {
String value=map.get(i); //获取value的值
System.out.println(value); } /*方法2:使用Map.entrySet<>构造iterator遍历key和value*/
Iterator<Map.Entry<Integer,String>> it=map.entrySet().iterator();
while (it.hasNext()){
Map.Entry<Integer,String> entry=it.next();
System.out.println("the key is:"+entry.getKey()+",and the value is:"+entry.getValue()); } /*方法3:推荐,通过Map.entrySet遍历key和value,特别是大容量时 */
for (Map.Entry<Integer,String> en:map.entrySet()){
System.out.println("the key is:"+en.getKey()+",and the value is:"+en.getValue());
} /* 方法4:只能得到value的值 */
for (String v1:map.values()
) {
System.out.println("the value is:"+v1);
} }
}
java基础知识5--集合类(Set,List,Map)和迭代器Iterator的使用的更多相关文章
- Java基础知识Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是相对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 毕向东—Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
- java基础知识一览(二)
一.java基础知识 1.一个文件中只能有一个public的类,因为他的类名要求和文件名相同. 2.classpath变量可以设置其它目录下的类. 例如:类文件所在目录是:F:\Javajdk,那么没 ...
- 黑马毕向东Java基础知识总结
Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记 侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
- JAVA基础第五章-集合框架Map篇
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- JAVA基础知识|lambda与stream
lambda与stream是java8中比较重要两个新特性,lambda表达式采用一种简洁的语法定义代码块,允许我们将行为传递到函数中.之前我们想将行为传递到函数中,仅有的选择是使用匿名内部类,现在我 ...
随机推荐
- WireX:Android智能手机组成的DDoS僵尸网络
阿里聚安全小编曾多次报道了官方应用市场出现恶意软件的事件,让大家在下载APP的时候三思而后行. 最近多家安全公司组成的安全研究小组发现了一个新的.传播广泛的僵尸网络,它是由成千上万的Android智能 ...
- Andrew Ng机器学习课程笔记--week9(下)(推荐系统&协同过滤)
本周内容较多,故分为上下两篇文章. 本文为下篇. 一.内容概要 1. Anomaly Detection Density Estimation Problem Motivation Gaussian ...
- 微信原图泄露的只能是 Exif ,你的隐私不在这!!!
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章. 未经允许,不得转载. 序 最近很多公众号都推送了关 ...
- UIGraphicsBeginImageContext - 位图上下文
UIGraphicsBeginImageContext 首先,先来认识一个UIGraphicsBeginImageContext,它会创建一个基于位图的上下文(context)(默认创建一个透明的位图 ...
- Centos7安装nginx并设置为HTTP代理服务器(正向代理)
# wget https://nginx.org/download/nginx-1.9.9.tar.gz # .tar.gz # cd nginx- # ./configure --prefix=/u ...
- spring boot / cloud (八) 使用RestTemplate来构建远程调用服务
spring boot / cloud (八) 使用RestTemplate来构建远程调用服务 前言 上周因家里突发急事,请假一周,故博客没有正常更新 RestTemplate介绍: RestTemp ...
- MyBatis框架——关系映射(一对多、多对多、多对一查询)
关系映射 一.映射(多)对一.(一)对一的关联关系 1).使用列的别名 ①.若不关联数据表,则可以得到关联对象的id属性 ②.若还希望得到关联对象的其它属性.则必须关联其它的数据表 1.创建表: 员工 ...
- PHP文件操作整理
三种目录表示: ./ 代表当前目录 ../ 代表父级目录 / 代表根目录 常用的文件操作函数有 通用读写: fpen() fwrite() fre ...
- Tornado框架简介(二)
--------------------Application-------------------- 1.settings 1.debug=True:,设置tornado是否工作在调试模式, ...
- 快速排序/快速查找(第k个, 前k个问题)
//快速排序:Partition分割函数,三数中值分割 bool g_bInvalidInput = false; int median3(int* data, int start, int end) ...