package com.starain.Iterator;
/*代码整理快捷键为Ctrl+Shift+F
* main方法输入快捷键main字符+Alt+/
* 输出快捷键sysout字符+Alt+/*/

import java.util.*;//常用的两个包,java.lang语言包,java.util实用包
/*java.lang自动引入,
* 包含数据包裹类(Byte,Short,Integer,Long,Float,Double,Character,Boolean),
* 字符串类(常量String,变量StringBuffer,StringBuilder)
* 数学类Math,
* 系统和运行时类(System,Runtime),
* 类操作类(Class,ClassLoader)
* java.util手动引入
* 包括日期类(Date,Calendar,GregorianCalendar)
* GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
* cal.isLeapYear(year);返回boolean类型,判断是否是闰年
* 集合类(Collection--Set--HashSet,TreeSet;
* Collection--List--ArrayList,Vector,LinkedList;
* Map--HashTable,HashMap,WeakHashMap)
* */

public class IteratorDemo1 {
public static void main(String[] args) {
/* List 是按照原序有序集合,可重复
* ArrayList异步方式,性能高,但是线程不安全
* Vector为同步方式,性能低,但是线程安全 */
List<String> list1 = new ArrayList<String>();//List为接口,不能直接实例化,利用泛型,子类实例化方式

/*添加操作*/
list1.add("my");
list1.add("name");
list1.add("is");
list1.add("starain");

/*判断是否为空操作*/
boolean bool1 = list1.isEmpty();

if (!bool1) {

/*当作数组整天输出*/
System.out.println(list1);

/*增强for循环打印方式*/
for (String str : list1) {
System.out.print(str + " ");
}

System.out.println("\n==================");
System.out.print("两条华丽的分割线");
System.out.println("\n==================");

/*Iterator接口打印输出方式
* 集合输出的标准形式是用Iterator接口
* 原理:Iterator是专门的迭代输出接口,将元素逐个判断是否有内容,若有内容则将内容取出*/
Iterator<String> iterator1 = list1.iterator();
while (iterator1.hasNext()) {
System.out.print(iterator1.next() + " ");
}

/*移除操作*/
list1.remove("is");

System.out.println();
for (String str2 : list1) {
System.out.print(str2 + " ");
}
}

System.out.println("\n==================");
System.out.print("两条华丽的分割线");
System.out.println("\n==================");

/*Set是不重复集合,不允许重复,重复则后覆盖前
* HashSet无序(非原序)
* TreeSet自动排序,基于Map,当无法完成排序会报错*/
Set<String> set1 = new HashSet<String>();
Set<String> set2 = new TreeSet<String>();

/*HashSet set1添加元素*/
set1.add("A");//快速复制粘贴快捷键Ctrl+Alt+方向下键
set1.add("B");
set1.add("B");
set1.add("D");
set1.add("C");
set1.add("E");
set1.add("F");
set1.add("C");
set1.add("G");

/*输出*/
System.out.println(set1);

/*TreeSet set2添加元素*/
set2.add("A");//快速复制粘贴快捷键Ctrl+Alt+方向下键
set2.add("B");
set2.add("B");
set2.add("D");
set2.add("C");
set2.add("E");
set2.add("F");
set2.add("C");
set2.add("G");

/*输出*/
System.out.println(set2);

/*Map例子
* Map接口中的保存形式是key->value形式,例如通讯录,利用姓名key,找到对应的电话号码value
* Map<K,V>两个泛型,对应key和value*/
Map<String,String> map1 = new HashMap<String,String>();

/*Map的添加方式为put()方法*/
map1.put("key1", "www");
map1.put("key2", ".");
map1.put("key3", "starain");
map1.put("key4", ".");
map1.put("key5", "index");
map1.put("key6", ".");
map1.put("key7", "com");

/*先判断存性
* 通过key判断是containKey(key)
* 通过value判断containValue(value)*/
boolean boolkey1 = map1.containsKey("key1");
boolean boolkey2 = map1.containsKey("key99");
if(boolkey1){

/*通过key打印value*/
String str1 = map1.get("key1");
System.out.println(str1);
}else System.out.println("key1不存在");
if(boolkey2){
String str99 = map1.get("key99");
System.out.println(str99);
}else System.out.println("key99不存在");

/*iterator接口方式打印*/

/*打印key*/
Set<String> s = map1.keySet();//keySet()返回值为Set类型
Iterator<String> i1 = s.iterator();
while(i1.hasNext()){
System.out.print(i1.next()+" ");//操作中禁止用集合方式对集合进行remove移除操作
}

System.out.println("\n==================");
System.out.print("两条华丽的分割线");
System.out.println("\n==================");

/*打印value*/
Collection<String> c = map1.values();//value()返回的是Collection类型
Iterator<String> i2 = c.iterator();
while(i2.hasNext()){
System.out.print(i2.next()+" ");
}
}
}

Iterator荟萃的更多相关文章

  1. 设计模式(十):从电影院中认识"迭代器模式"(Iterator Pattern)

    上篇博客我们从醋溜土豆丝与清炒苦瓜中认识了“模板方法模式”,那么在今天这篇博客中我们要从电影院中来认识"迭代器模式"(Iterator Pattern).“迭代器模式”顾名思义就是 ...

  2. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  3. [LeetCode] Flatten Nested List Iterator 压平嵌套链表迭代器

    Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ...

  4. [LeetCode] Peeking Iterator 顶端迭代器

    Given an Iterator class interface with methods: next() and hasNext(), design and implement a Peeking ...

  5. [LeetCode] Zigzag Iterator 之字形迭代器

    Given two 1d vectors, implement an iterator to return their elements alternately. For example, given ...

  6. [LeetCode] Binary Search Tree Iterator 二叉搜索树迭代器

    Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the ro ...

  7. 用vue.js学习es6(六):Iterator和for...of循环

    一.Iterator (遍历器)的概念: 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只 要部署Iterator接口,就可以完成遍历操 ...

  8. [转]使用Enumeration和Iterator遍历集合类

    原文地址:http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526268.html 前言 在数据库连接池分析的代码实例中,看到其中使用Enume ...

  9. 14 Iterator和for...of循环

    Iterator和for...of循环 首先 Iterator 是一个接口. 标准是 function makeIterator(array) { var nextIndex = 0; return ...

随机推荐

  1. HTML基础语句

    一,网页基础结构: 1 <html> 2 <head> 3 <title>我的第一个网页</title> 4 </head> 5 <b ...

  2. js 实现关键词球状旋转效果

    效果图 html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  3. Modernizr——为HTML5和CSS3而生!

    原文地址:http://www.alistapart.com/articles/taking-advantage-of-html5-and-css3-with-modernizr/ 堂主译文地址:ht ...

  4. Struts2 删除后直接直接到List显示页面

    package com.sun; import java.util.List; import java.util.Map; import org.hibernate.Session; import o ...

  5. 安装ZendDebugger 调试php

    一直懒得装断点调试工具,平时调试就用echo var_dump debug_print_backtrace 搞搞. 今天同事装了个xdebug,看着眼馋.于是想自己也装一个,由于平时用zend stu ...

  6. leetcode修炼之路——350. Intersection of Two Arrays II

    题目如下: Given two arrays, write a function to compute their intersection. Example: Given nums1 = [1, 2 ...

  7. c - 字符串的反转

    1,递归实现 // 递归实现字符串反转(可通过栈的调用来加深理解). char * reverse(char *c) { if(!c) return NULL; int len = strlen(c) ...

  8. mssql sql高效关联子查询的update 批量更新

    /* 使用带关联子查询的Update更新     --1.创建测试表 create TABLE Table1     (     a varchar(10),     b varchar(10),   ...

  9. OC - 19.pthread和NSThread

    简介 恰当的使用多线程编程可以提供任务的执行效率和系统资源的利用率 多线程是为了提高资源利用率,和应用程序的响应速度,多个线程共享应用资源 每个应用程序都有一个主线程,通常用来做UI界面刷新等 比较耗 ...

  10. iOS开发之Quartz2D详解

    1. 什么是Quartz2D? Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片( ...