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表达式采用一种简洁的语法定义代码块,允许我们将行为传递到函数中.之前我们想将行为传递到函数中,仅有的选择是使用匿名内部类,现在我 ...
随机推荐
- WebService/WCF/WebAPI区别
详细描述它们之间的区别,为什么这么选择,尤其是WCF vs WebAPI
- 【Ubuntu 16】源码包安装Apache Httpd
源码包安装适合初学者使用. 背景信息 APR (Apache Portable Runtime) Apache可移植运行的任务(APR)项目是创建和维护软件库,为底层平台的具体实现提供了一个可预见的和 ...
- 三菱Ethernet工业以太网
1.什么是Ethernet? 1)网络组成信息网和控制网 2)IP地址的概念 3)端口号的概念 4)通信方式,通信协议 5)开放关闭处理 6)要点总结 2.Ethernet模块 1)CUP能够安装的E ...
- 不安装vc2015 Redistributable解决api-ms-win-crt-runtime-l1-1-0.dll丢失错误
一.背景 最近用到python下的cx_Oracle模块,开发环境中测试正常,用cx_freeze打包后,到用户机器上一部署,各种奇奇怪怪的问题频出,运行环境如下: a.开发环境:64位win10操作 ...
- 利用mvc filterconfig属性实现权限验证
好久没写过博客了,突然发现最后博客更新时间是2016年,感觉好长远 权限控制基本是所有cms系统或者进销存,或者几乎所有能和业务系统扯上关系的系统都要用上的一个模块,很多都想把这个模块独立出来,权限单 ...
- STL空间配置器
1.什么是空间配置器? 空间配置器负责空间配置与管理.配置器是一个实现了动态空间配置.空间管理.空间释放的class template.以内存池方式实现小块内存管理分配.关于内存池概念可以点击:内存池 ...
- Django 创建admin账户
Django版本 1.11.4 安装参考:http://blog.csdn.net/a_little_snail/article/details/76933868 问题:创建admin账户密码 解决: ...
- CSS照片墙
<!doctype html><html><head><meta charset="utf-8"><title>CSS照 ...
- SQL查询语句分类
SQL查询语句有多种,下面总结下.首先先建三张表用于后面的实验 -- 学生表,记录学生信息 CREATE TABLE student( sno ), sname ), ssex ENUM('男','女 ...
- 开源分享 Unity3d客户端与C#分布式服务端游戏框架
很久之前,在博客园写了一篇文章,<分布式网游server的一些想法语言和平台的选择>,当时就有了用C#做网游服务端的想法.写了个Unity3d客户端分布式服务端框架,最近发布了1.0版本, ...