[英]Adding, removing and printing from ArrayList with Iterator
First of all I want t say that I am aware of other easier and better loops for this kind of work, but I just want to practise a little with Iterator. 首先,我不想说我知道这种工作还有其他更简单,更好的循环,但是我只想对Iterator进行一些练习。 So, I am looping through an ArrayList and I want to add and remove elements in it with iterator but when I run the program I get no output on screen.
因此,我正在遍历ArrayList,并希望使用迭代器在其中添加和删除元素,但是当我运行该程序时,屏幕上没有任何输出。 This is what I have:
这就是我所拥有的:
public class Orders {
ArrayList<String> list = new ArrayList<>();
Iterator it = list.iterator();
public void addOrder(String s) {
while(it.hasNext()){
String st = (String) it.next();
if(s.equals(st)){
System.out.println("The order '"+s+"' already exists.");
}
else{
list.add(s);
System.out.println("Order '"+s+"' was added.");
}
}
}
public void deleteOrder(String s) {
while(it.hasNext()){
String st = (String) it.next();
if(s.equals(st)){
list.remove(s);
System.out.println("The order '"+s+"' was deleted succesfully.");
}
else{
System.out.println("The order '"+s+"' was not found.");
}
}
}
public void showList(){
while(it.hasNext()){
String st = (String) it.next();
System.out.println("Order: '"+st+"'. \n");
}
}
}
public class RemoveOrder {
private Orders ord;
public RemoveOrder( Orders o ) {
ord = o;
}
public void remove() {
ord.deleteOrder( "jk123" );
ord.deleteOrder( "jk125" );
ord.showList();
}
}
public class AddOrder {
private Orders ord;
public AddOrder( Orders o ) {
ord = o;
}
public void add() {
ord.addOrder( "jk123" );
ord.addOrder( "jk124" );
ord.addOrder( "jk125" );
ord.addOrder( "jk126" );
ord.showList();
}
}
public class IteratorRun implements Runnable {
Orders ord = new Orders();
AddOrder ao = new AddOrder(ord);
RemoveOrder ro = new RemoveOrder(ord);
public void run() {
try {
ao.add();
ro.remove();
} catch (Exception e) {
}
}
}
And in main: 而在主要方面:
Thread t1 = new Thread(new IteratorRun());
t1.start();
In most of the places similar code is present addOrder/deleteOrder this will cause this exception. 在大多数地方,存在类似的代码addOrder / deleteOrder,这将导致此异常。
example : Following code will be throwing ConcurrentModificationException. 示例:以下代码将引发ConcurrentModificationException。
ArrayList al = new ArrayList(); al.add("test"); Iterator iter = al.iterator(); while(iter.hasNext()) { System.out.println(iter.next()); al.add("test"); }
I have updated the Orders code 我已经更新了订单代码
import java.util.ArrayList;
import java.util.Iterator;
public class Orders {
ArrayList list = new ArrayList();
Iterator it = null;
public void addOrder(String s) {
it = list.iterator();
while(it.hasNext()){
String st = (String) it.next();
if(s.equals(st)){
System.out.println("The order '"+s+"' already exists.");
return;
}
}
list.add(s);
System.out.println("Order '"+s+"' was added.");
}
public void deleteOrder(String s) {
it = list.iterator();
while(it.hasNext()){
String st = (String) it.next();
if(s.equals(st)){
list.remove(s);
System.out.println("The order '"+s+"' was deleted succesfully.");
return ;
}
}
System.out.println("The order '"+s+"' was not found.");
}
public void showList(){
it = list.iterator();
while(it.hasNext()){
String st = (String) it.next();
System.out.println("Order: '"+st+"'. \n");
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.