北大青鸟光谷校区

北大青鸟光谷校区

  • 北大青鸟徐东校区
  • 北大青鸟光谷校区
  • 北大青鸟高新校区
  • 荆州青鸟之家
  • 襄阳青鸟之家

17740513250

百日千才

java新手入门篇-java中foreach遍历的原理

发布日期:2023-03-31来源:武汉北大青鸟武汉校区作者:武汉宏鹏

  武汉北大青鸟武汉宏鹏光谷校区java新手入门篇-java中foreach遍历的原理。

  在平时Java程序中,应用比较多的就是对Collection集合类的foreach遍历,foreach之所以能工作,是因为这些集合类都实现了Iterablei接口,该接口中定义了Iterator迭代器的产生方法,并且foreach就是通过Iterable接口在序列中进行移动。

  Iterablei接口API:

  package java.lang;

  import java.util.Iterator;

  public interface Iterable

  {

  public abstract Iterator iterator();

  }

  该接口中定义了产生Iterator迭代器的方法;

  package java.util;

  public interface Iterator

  {

  public abstract boolean hasNext();

  public abstract Object next();

  public abstract void remove();

  }

  因此如果自己建的一个类也实现了Iterable接口,并且实现了具体产生Iterator的方法,foreach方法也是同样适用于新建类的,结合适配器模式的一个样例如下:

  import java.util.ArrayList;

  import java.util.Arrays;

  import java.util.Collections;

  import java.util.Iterator;

  import java.util.List;

  import java.util.Random;

  public class IteartorClass implements Iterable<String> {

  protected static final String[] WORDS = "just for test iterable interface".split(" ");

  @Override

  public Iterator<String>iterator() {  return new Iterato<String>() {

  private int index = 0;

  public boolean hasNext() {

  return index < WORDS.length - 1;

  }

  @Override

  public String next() {

  return WORDS[index++];

  }

  @Override

  public void remove() {

  }

  };

  }

  public static void main(String[] args) {

  mutileIteratorClass class1 = new mutileIteratorClass();

  for (String string : class1.randomNized()) {

  System.out.print(string + " ");

  }

  System.out.print("n");

  for (String string : class1.reversed()) {

  System.out.print(string + " ");

  }

  }

  }

  class mutileIteratorClass extends IteartorClass {

    public Iterable<String> reversed() {        return new Iterable<String>() {            public Iterator<String> iterator() {                   return new Iterator<String>() {                       private int index = WORDS.length - 1;                       public boolean hasNext() {                        return index >= 0;                    }   

  public String next() {

  return WORDS[index--];

  }

  public void remove() {

  }

  };

  }

  };

  }

     public Iterable<String>randomNized() {  return new Iterable<String>() {            public Iterator<String> iterator() {                List<String> list = new ArrayList<String>(Arrays.asList(WORDS));

  Collections.shuffle(list, new Random(20));

  return list.iterator();

  }

  };

  }

  }

  武汉北大青鸟光谷校区java培训课程学习热线:17740513250.

关闭

只为了方便您就学 北大青鸟光谷校区 北大青鸟武汉校区

武汉市洪山区珞喻路724号(地铁二号线光谷广场站F口出

Copyright (c) 2006-2023 武汉宏鹏教育咨询有限公司 版权所有 All Rights Reserved.