java迭代器

来源:互联网 发布:京华科讯 知乎 编辑:程序博客网 时间:2023/11/29 03:31

java迭代器

package com.kuaff.jdk5;

import java.util.*;

import java.util.Collection;

 

public class Foreach

{

     private Collection c = null;

     private String[] belle = new String[4];

     public Foreach()

     {

         belle[0] = "西施";

         belle[1] = "王昭君";

         belle[2] = "貂禅";

         belle[3] = "杨贵妃";

         c = Arrays.asList(belle);

     }

     public void testCollection()

     {

         for (String b : c)

         {

               System.out.println("曾经的风化绝代:" + b);

         }

     }

     public void testArray()

     {

         for (String b : belle)

         {

               System.out.println("曾经的青史留名:" + b);

         }

     }

     public static void main(String[] args)

     {

         Foreach each = new Foreach();

         each.testCollection();

         each.testArray();

     }

}

对于集合类型和数组类型的,我们都可以通过foreach语法来访问它。上面的例子中,以前我们要依次访问数组,挺麻烦:

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

{

         String b = belle[i];

         System.out.println("曾经的风化绝代:" + b);

}

现在只需下面简单的语句即可:

for (String b : belle)

{

        System.out.println("曾经的青史留名:" + b);

}

对集合的访问效果更明显。以前我们访问集合的代码:

for (Iterator it = c.iterator(); it.hasNext();)

{

         String name = (String) it.next();

         System.out.println("曾经的风化绝代:" + name);

}

现在我们只需下面的语句:

for (String b : c)

{

         System.out.println("曾经的风化绝代:" + b);

}

 

Foreach也不是万能的,它也有以下的缺点:

在以前的代码中,我们可以通过Iterator执行remove操作。

for (Iterator it = c.iterator(); it.hasNext();)

{

        itremove()

}

但是,在现在的foreach版中,我们无法删除集合包含的对象。你也不能替换对象。

同时,你也不能并行的foreach多个集合。所以,在我们编写代码时,还得看情况而使用它。

【WIN_ANGEL】:

public class Check{

    public static boolean check(Object...objects){

      boolean result=false;

      for(Object obj:objects){

        if((((String)obj).trim().equals(""))

return result=true;

      }

      return result;

    }

}

上面的程序是检查输入的n个参数是否是由空格组成

调用的时候可以输入多个参数

如:

boolean pd1=Check.check("string1");

boolean pd2=Check.check("string1","string2");

boolean pd3=Check.check("string1","string2","string3");

都可以

Object...objects中第一个Object表示行参类型 第2个是行参名 中间三个点是固定写法 大概是表示多个的意思吧 我猜的 HOHO~ ^_^

【yiyi2007】:

那原来的

int aa[]=new int[10];

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

{

   aa[i]=i;

}

这样一个数组赋值,用foreach来写,要怎么写呢??

【viena】:

int aa[]=new int[10];

for (int a : aa)

{

   a=i;

}

【WIN_ANGEL】:

foreach 没法访问定位,也就没办法修改,删除 集合中的内容

【yiyi2007】:

viena(维也纳N02)

int aa[]=new int[10];

for (int a : aa)

{

   a=i;

}

----------------------------------------------

i是未定义的,程序不能编译过

 

java中List的通俗介绍和简单实例

List 经常用在对一组对象的存储和操作上,比如一组学生信息,一组帐号信息等等。

List是个集合接口,只要是集合类接口都会有个“迭代子”( Iterator ),利用这个迭代子,就可以对list内存的一组对象进行操作。

所有要想操作这个list内存的东西,就首先要得到此迭代子的实例:Iterator it=l.iterator();

可以理解为动态数组,传统数组必须定义好数组的个数才可以使用,而容器对象无须定义好数组下标总数。

用add()方法即可添加新的成员对象,他可以添加的仅仅只能为对象,不能添加基本数据类型,容器还对应get(),remove()方法来获取和删除数据成员

实例1.

import java.util.*;

public class ArrayListTest{

public static void main(String dd[]){

//new了一个存储list

List l=new ArrayList();

//因为Collection framework只能存储对象所以new封装类

l.add(new Integer(1));

l.add(new Integer(2));

l.add(new Integer(3));

l.add(new Integer(4));

  

Iterator it=l.iterator();

//hasNext是取值取的是当前值.他的运算过程是判断下个是否有值如果有继续.

while(it.hasNext()){

//设it.next封装类,调用Integer的intValue方法返回值为int赋给i;

int i=((Integer)it.next()).intValue();

System.out.println("Element in list is : "+i);

}

}

}

实例2.

import java.util.*;

public class ArrayListTest1{

public static void main(String dd[]){

//new了一个存储list

List l=new ArrayList();

//因为Collection framework只能存储对象这个例子就是说明String是对象

l.add("lalala");

l.add("afdsfa");

  

Iterator it=l.iterator();

//hasNext是取值取的是当前值.他的运算过程是判断下个是否有值如果有继续.

while(it.hasNext()){

//设it.next封装类,调用强制转换String类型赋值给i;

String i=(String)it.next();

System.out.println("Element in list is : "+i);

}

}

}