Java 迭代器的创建方法

Java 迭代器的创建方法,java,iterator,Java,Iterator,可以向我描述迭代器不工作的原因。JDeveloper说我必须为迭代器创建一个方法,但我不知道这个程序的意思。因此我请求你的帮助。程序如下所示: 测试顺序: package hej; import java.util.*; public class TestOrder { public static void main(String[] args) { OrderRegister orderregister = new OrderRegister(); Order order1

可以向我描述迭代器不工作的原因。JDeveloper说我必须为迭代器创建一个方法,但我不知道这个程序的意思。因此我请求你的帮助。程序如下所示:

测试顺序:

package hej;

import java.util.*;

public class TestOrder {


public static void main(String[] args) {



OrderRegister orderregister = new OrderRegister();


Order order1 = new Order("123","Kop");
Order order2 = new Order("456","Salj");
Order order3 = new Order("789","Kop");


orderregister.addOrder(order1);
orderregister.addOrder(order2);
orderregister.addOrder(order3);

System.out.println(orderregister.sokOrder("123").getKopsalj());
orderregister.raderaOrder("456");
Order tmpOrder = orderregister.sokOrder("456");
if (tmpOrder == null) {
    System.out.println("Fungerar!");
}
else{
    System.out.println("Why u lie?");
}
System.out.println(orderregister.sokOrder("123").getKopsalj());
orderregister.sokOrder("123").setKopsalj("Salj");
System.out.println(orderregister.sokOrder("123").getKopsalj());



Iterator<Order> i=orderregister.iterator();
    while(i.hasNext()){
        System.out.println(i.next());
    }
}
}
package hej;

import java.util.Iterator;

public class Order {
private String ordernr;
private String kopsalj;

public Order(String newOrdernr, String newKopsalj) {
    setOrdernr(newOrdernr);
    setKopsalj(newKopsalj);
}

public void setOrdernr(String ordernr) {
    this.ordernr = ordernr;
}

public String getOrdernr() {
    return ordernr;
}

public void setKopsalj(String kopsalj) {
    this.kopsalj = kopsalj;
}

public String getKopsalj() {
    return kopsalj;
}

public  String toString()
{
    return "Order: " + this.ordernr+", "+"Manover: "
                            +this.kopsalj;
}
}
package hej;

import java.util.ArrayList;
import java.util.Iterator;

public class OrderRegister {

private ArrayList<Order> orderArrayList;

public OrderRegister() {
    orderArrayList = new ArrayList<Order>();
}



// Lagg till Order

public void addOrder(Order newOrder) {
    orderArrayList.add(newOrder);
}




// Sok Order

public Order sokOrder(String ordernrSok) {
    Order tmpOrder = null;
    int i = 0;
    boolean found = false;
    while (i < orderArrayList.size() && !found) {
        tmpOrder = orderArrayList.get(i);
        if (tmpOrder.getOrdernr().equals(ordernrSok)) {
            found = true;
        }
        i++;
    }
    if (!found) {
        tmpOrder = null;
    }
    return tmpOrder;
}



// Ta bort Order

public void raderaOrder(String ordernrRadera) {
    Order tmpOrder = null;
    int i = 0;
    boolean found = false;
    while (i < orderArrayList.size() && !found) {
        tmpOrder = orderArrayList.get(i);
        if (tmpOrder.getOrdernr().equals(ordernrRadera)) {
            orderArrayList.remove(i);
            found = true;
        }
        i++;
    }
}



// andra Orderuppgifter

public void setOrderUppgifter(String ordernr, String newKopsalj){
    Order order = sokOrder(ordernr);
    if (order != null) {
        order.setKopsalj(newKopsalj);
    }
}
}
订单登记簿:

package hej;

import java.util.*;

public class TestOrder {


public static void main(String[] args) {



OrderRegister orderregister = new OrderRegister();


Order order1 = new Order("123","Kop");
Order order2 = new Order("456","Salj");
Order order3 = new Order("789","Kop");


orderregister.addOrder(order1);
orderregister.addOrder(order2);
orderregister.addOrder(order3);

System.out.println(orderregister.sokOrder("123").getKopsalj());
orderregister.raderaOrder("456");
Order tmpOrder = orderregister.sokOrder("456");
if (tmpOrder == null) {
    System.out.println("Fungerar!");
}
else{
    System.out.println("Why u lie?");
}
System.out.println(orderregister.sokOrder("123").getKopsalj());
orderregister.sokOrder("123").setKopsalj("Salj");
System.out.println(orderregister.sokOrder("123").getKopsalj());



Iterator<Order> i=orderregister.iterator();
    while(i.hasNext()){
        System.out.println(i.next());
    }
}
}
package hej;

import java.util.Iterator;

public class Order {
private String ordernr;
private String kopsalj;

public Order(String newOrdernr, String newKopsalj) {
    setOrdernr(newOrdernr);
    setKopsalj(newKopsalj);
}

public void setOrdernr(String ordernr) {
    this.ordernr = ordernr;
}

public String getOrdernr() {
    return ordernr;
}

public void setKopsalj(String kopsalj) {
    this.kopsalj = kopsalj;
}

public String getKopsalj() {
    return kopsalj;
}

public  String toString()
{
    return "Order: " + this.ordernr+", "+"Manover: "
                            +this.kopsalj;
}
}
package hej;

import java.util.ArrayList;
import java.util.Iterator;

public class OrderRegister {

private ArrayList<Order> orderArrayList;

public OrderRegister() {
    orderArrayList = new ArrayList<Order>();
}



// Lagg till Order

public void addOrder(Order newOrder) {
    orderArrayList.add(newOrder);
}




// Sok Order

public Order sokOrder(String ordernrSok) {
    Order tmpOrder = null;
    int i = 0;
    boolean found = false;
    while (i < orderArrayList.size() && !found) {
        tmpOrder = orderArrayList.get(i);
        if (tmpOrder.getOrdernr().equals(ordernrSok)) {
            found = true;
        }
        i++;
    }
    if (!found) {
        tmpOrder = null;
    }
    return tmpOrder;
}



// Ta bort Order

public void raderaOrder(String ordernrRadera) {
    Order tmpOrder = null;
    int i = 0;
    boolean found = false;
    while (i < orderArrayList.size() && !found) {
        tmpOrder = orderArrayList.get(i);
        if (tmpOrder.getOrdernr().equals(ordernrRadera)) {
            orderArrayList.remove(i);
            found = true;
        }
        i++;
    }
}



// andra Orderuppgifter

public void setOrderUppgifter(String ordernr, String newKopsalj){
    Order order = sokOrder(ordernr);
    if (order != null) {
        order.setKopsalj(newKopsalj);
    }
}
}
package-hej;
导入java.util.ArrayList;
导入java.util.Iterator;
公共类命令寄存器{
私有ArrayList orderArrayList;
公共秩序登记册(){
orderArrayList=新建ArrayList();
}
//延迟交货订单
公共无效添加订单(订单新订单){
orderArrayList.add(新订单);
}
//索克秩序
公共命令sokOrder(字符串ordernrSok){
订单tmpOrder=null;
int i=0;
布尔值=false;
而(i
请参阅

对于每个迭代器,都需要实现hasNext、next和remove方法


另外,类orderregister没有任何方法迭代器()。您需要从已经实现的类继承表单,或者需要自己实现它。

让OrderRegister实现Iterable接口并实现iterator than()


在那里,您可以委托给orderArrayList.iterator()

您需要让
OrderRegister
类实现。
T
是迭代器数据类型,在您的案例中是
Order
。 所以你得到:

public class OrderRegister implements Iterable<Order>
现在,您可以通过以下方式使用您的类:

for(Order order: orderregister) {
    System.out.println(order.getKöpsälj());
}

注意:您的
while
-循环仍将工作

我假定您的问题是这一行:

Iterator<Order> i=orderregister.iterator();

你能把代码片段缩减到真正需要的程度吗?另外,您是否尝试向类中添加方法
iterator()
?(或者,让它扩展
ArrayList
而不是包装一个!)它到底说了什么?请添加准确的错误