商品名称遍历,某商品管理系统的商品名称存储在一个字符串数组中,现需要自定义一个双向迭代器,实现对该商品数组的(前向和后向)遍历,请用字符绘制类图,并java代码实现编程
时间: 2023-11-18 19:04:15 浏览: 64
以下是该问题的类图和Java代码实现:
类图:
```
+---------------------------+
| 商品名称遍历器接口 |
+---------------------------+
| +hasNext():boolean |
| +next():String |
| +hasPrevious():boolean |
| +previous():String |
+---------------------------+
+---------------------------+
| 商品名称数组类 |
+---------------------------+
| -names:String[] |
+---------------------------+
| +iterator():Iterator |
+---------------------------+
+---------------------------+
| 商品名称双向迭代器类 |
+---------------------------+
| -names:String[] |
| -current:int |
+---------------------------+
| +hasNext():boolean |
| +next():String |
| +hasPrevious():boolean |
| +previous():String |
+---------------------------+
```
Java代码实现:
```
import java.util.Iterator;
public interface NameIterator {
boolean hasNext();
String next();
boolean hasPrevious();
String previous();
}
public class NameArray {
private String[] names;
public NameArray(String[] names) {
this.names = names;
}
public Iterator iterator() {
return new NameIteratorImpl();
}
private class NameIteratorImpl implements NameIterator {
private int current = 0;
public boolean hasNext() {
return current < names.length;
}
public String next() {
String name = names[current];
current++;
return name;
}
public boolean hasPrevious() {
return current > 0;
}
public String previous() {
current--;
String name = names[current];
return name;
}
}
}
public static void main(String[] args) {
String[] names = {"apple", "banana", "orange", "pear"};
NameArray nameArray = new NameArray(names);
NameIterator iterator = nameArray.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
while (iterator.hasPrevious()) {
System.out.println(iterator.previous());
}
}
```