您的位置:首页 > 编程语言 > Java开发

Java之增强的for 循环

2017-04-13 16:42 316 查看

3. 增强for循环

1) 作用:

对存储对象的容器进行迭代

2) jdk5曾经怎么迭代

3) 增强for循环迭代数组

String [] arr = {"a", "b","c"}; //数组的静态定义方式,仅仅试用于数组首次定义的时候

// 传统方式

for(int i=0; i<arr.length; i++) {

//i依次表示数组的角标

Strings = arr[i];

System.out.println(s);

}

System.out.println("-------------------------------------");

// 在jdk5中我们能够使用增强for循环迭代

// 增强for循环括号中写两个參数。第一个是声明一个变量,变量类型必须是数组元素的类型

// 第二个就是须要迭代的容器

// for循环会循环容器的length次, 每次都将容器的第n-1个元素赋值给声明的变量

for(String s : arr) {

//循环体。 运行arr.length

//每次都将arr中的第n-1个元素给s

System.out.println(s); //

}

4) 单列集合Collection

List list = new ArrayList();

list.add("aaa");

list.add("bbb");

list.add("ccc");

// 传统方式1

/* 1.获得迭代器

Iterator iter = list.iterator();

// 2.循环推断迭代器是否有下一个

while(iter.hasNext()) {

Stringstr = (String) iter.next(); // 将迭代器的指针移向下一个,并将迭代当前指向的元素返回

System.out.println(str);

}

*/

// 传统方式2

for(Iterator iter=list.iterator();iter.hasNext(); ) {

Strings = (String) iter.next();

System.out.println(s);

}

System.out.println("--------------------------------");

// 增强for循环, 没有使用泛型的集合能不能使用增强for循环迭代?能

for(Object obj : list) {

Strings = (String) obj;

System.out.println(s);

}

5) 双列集合Map

Map map = new HashMap();

map.put("a", "aaa");

map.put("b", "bbb");

map.put("c", "ccc");

// 传统方式迭代1

// 1. 获得全部的key

Set keys = map.keySet();

// 2.迭代keys获得全部的key

Iterator iter = keys.iterator();

while(iter.hasNext()) {

Stringkey = (String) iter.next(); // a b c

//3.依据key获得相应的value

Stringvalue = (String) map.get(key);

System.out.println(key+ "=" + value);

}

System.out.println("---------------------------------");

// 传统方式2。必须掌握这样的方式

// 1.获得全部的键值对Entry对象

Set entrys = map.entrySet();

// 2.迭代出全部的entry

iter = entrys.iterator();

while(iter.hasNext()) {

Map.Entryentry = (Entry) iter.next();

//分别获得key和value

Stringkey = (String) entry.getKey();

Stringvalue = (String) entry.getValue();

System.out.println(key+ "=" + value);

}

System.out.println("-------------------------------------");

System.out.println("增强for循环迭代,");

// 增强for循环迭代,

// 原则上map集合是无法使用增强for循环来迭代的。

// 由于增强for循环仅仅能针对实现了Iterable接口的集合进行迭代

// Iterable是jdk5中新定义的接口,就一个方法iterator方法

// 仅仅有实现了Iterable接口的类。才干保证一定有iterator方法

// java有这种限定是由于增强for循环内部还是用迭代器实现的

// 而实际上,我们能够通过某种方式来使用增强for循环

for(Object obj : map.entrySet()) {

//obj 依次表示Entry

Map.Entryentry = (Entry) obj;

System.out.println(entry.getKey()+ "=" + entry.getValue());

}

6)集合迭代注意问题

// 在使用迭代器迭代集合的过程中。不能对集合进行增删操作

@Test

public void test4() {

Listlist = new ArrayList();

list.add("wangwu");

list.add("zhangsan");

list.add("lisi");

Iteratoriter = list.iterator();

while(iter.hasNext()){

Stringname = (String) iter.next();

if("wangwu".equals(name)){

//从集合中删掉

//list.remove(name);

//迭代过程中删除元素须要调用迭代器的方法

iter.remove(); // 删除我迭代的集合被我迭代的最后一个元素

}

}

// 1 2 4

System.out.println(list.size());

}

@Test

public void test5() {

Listlist = new ArrayList();

list.add("aa");

list.add("bb");

//使用ListIterator迭代器

ListIteratorlistIterator = list.listIterator();

while(listIterator.hasNext()){

listIterator.next();

//迭代过程中添加元素

listIterator.add("cc");

}

System.out.println(list.size());

}

7) 增强for循环注意问题

//在使用增强for循环时,不能对元素进行赋值

int[] arr = {1,2,3};

for(int num : arr) {

num= 0;

}

System.out.println(arr[1]);

publicclass Demo3 {

@Test

public void test3(){

Map map=new HashMap();

//Map map2=newLinkedHashMap<K, V>();

map.put("1","aaa");

map.put("2","bbb");

map.put("3","ccc");

//传统方式1

Set set=map.keySet();

Iterator it=set.iterator();

while(it.hasNext()){

Stringkey=(String)it.next();

Stringvalue=(String) map.get(key);

System.out.println("key="+key+",value="+value);

}

//传统方式2

Set set2=map.entrySet();

Iterator it2=set2.iterator();

while(it2.hasNext()){

Map.Entry entry=(Entry)it2.next();

System.out.println("key="+entry.getKey()+",value="+entry.getValue());

}

//增强for循环的1种方式

for(Object obj:map.keySet()){

Stringkey2=(String)obj;

Stringvalue2=(String)map.get(key2);

System.out.println("key2="+key2+",value2="+value2);

}

//增强for循环的2种方式

for(Objectobj:map.entrySet()){

Map.Entryentry3=(Entry) obj;

String key3=(String)entry3.getKey();

Stringvalue3=(String) entry3.getValue();

System.out.println("key3="+key3+",value3="+value3);

}

//增强for循环须要注意的问题:仅仅适合取数据

int arr[]={1,2,3};

for(int i: arr){

i=10;

}

System.out.println(arr[0]);// 1

List li=new ArrayList();

li.add("1");

for(Object obj : li){

obj="888";

}

System.out.println(li.get(0));//1

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: