Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从特定对象的数组生成迭代器 private SomeObject[]所有对象; 公共迭代器迭代器(){ // }_Java_Arrays_Iterator - Fatal编程技术网

Java 如何从特定对象的数组生成迭代器 private SomeObject[]所有对象; 公共迭代器迭代器(){ // }

Java 如何从特定对象的数组生成迭代器 private SomeObject[]所有对象; 公共迭代器迭代器(){ // },java,arrays,iterator,Java,Arrays,Iterator,从SomeObject数组中获取迭代器的最佳方法是什么 编辑 因此,如果不使用像ArrayList或Hashset这样的包装器,就无法生成迭代器 您可以编写自己的类来实现迭代器。简单地实现接口的方法。如果不希望迭代器的用户从数组中删除项(因为它不是ArrayList),那么如果调用此方法,则抛出UnsupportdOperationException 当然,如果使用ArrayList,那么iterator()方法只需从ArrayList返回迭代器即可,从而使您的生活更加轻松。使用列表迭代器: p

SomeObject
数组中获取迭代器的最佳方法是什么

编辑
因此,如果不使用像ArrayList或Hashset这样的包装器,就无法生成迭代器

您可以编写自己的类来实现
迭代器
。简单地实现接口的方法。如果不希望迭代器的用户从数组中删除项(因为它不是ArrayList),那么如果调用此方法,则抛出UnsupportdOperationException


当然,如果使用
ArrayList
,那么
iterator()
方法只需从ArrayList返回迭代器即可,从而使您的生活更加轻松。

使用
列表
迭代器:

private SomeObject[] all_objs;     

public Iterator<SomeObject> iterator() {
   //
}
import java.util.List;
导入java.util.array;
公共迭代器迭代器(){
List=(List)Arrays.asList(所有对象);
return list.iterator();
}

您还可以查看的代码。下面是您应该如何实现它

import java.util.List;
import java.util.Arrays;

public <T> Iterator<T> iterator() {
    List<T> list = (List<T>) Arrays.asList(all_objs);

    return list.iterator();
}
T=SomeObject//您的类
公共YouIterable实现Iterable{
//**Iterable**实现此接口允许对象
//成为“foreach”语句的目标。
公共迭代器迭代器(){
返回新的Itr();
}  
私有类Itr实现迭代器{
//复杂的实现-您必须维护一个游标来跟踪
//访问了哪个记录
布尔hasNext(){
//如果迭代包含更多元素,则返回true。
}
T next(){
//返回迭代中的下一个元素。
}  
void remove(){//remove
}
}
}
 T=SomeObject //Your Class

 public YourIterable<T> implements Iterable<T>{
     //**Iterable**  Implementing this interface allows an object 
     //to be the target of the "foreach" statement.
     public Iterator<T> iterator() {

          return new Itr();
      }  

   private class Itr implement Iterator<T> {
      //Complex Implementation - You have to maintain a Cursor to keep track of 
      // which record was accessed
            boolean hasNext() {
                 //Returns true if the iteration has more elements.
            }

            T next() { 
             //Returns the next element in the iteration.
            }  

            void remove() {//Remove 
          }

    }

 }