用一个字符串表示目前拥有的电影片名,请设计一个生成器类MovieGenerator,可用于将电影片名填充不同类型的容器 类中包含一成员,为电影片名字符串。 请设计方法实现以下指定功能,以实现对电影片名的处理: 1. 一个生成方法next,可以获取下一部电影片名,其中如果已获取完毕所有的电影名,则循环到第一部影片名开始 ,如next(String[] array),next(Collection<String> collection) 2. 一个填充方法fill,可用于生成器类填充不同类型的容器类型,包括ArrayList, LinkedList, HashSet, LinkedHashSet和TreeSet等,具体实现至少包含两种不同类型容器,以及填充一普通字符串数组,如Collection<String> fill(Collection<String> collection)可用于填充collection,也可定义String[] fill((String[] str)用于填充字符类型数组 3. 分别打印每一个容器或数组中的所有内容
时间: 2023-06-16 21:02:51 浏览: 183
```java
import java.util.*;
public class MovieGenerator {
private String[] movies;
private int index;
public MovieGenerator(String[] movies) {
this.movies = movies;
this.index = 0;
}
public String next() {
if (index >= movies.length) {
index = 0;
}
return movies[index++];
}
public Collection<String> fill(Collection<String> collection) {
for (int i = 0; i < movies.length; i++) {
collection.add(movies[i]);
}
return collection;
}
public String[] fill(String[] str) {
for (int i = 0; i < movies.length; i++) {
str[i] = movies[i];
}
return str;
}
public void printList(List<String> list) {
for (String movie : list) {
System.out.println(movie);
}
}
public void printSet(Set<String> set) {
for (String movie : set) {
System.out.println(movie);
}
}
}
```
使用示例:
```java
public static void main(String[] args) {
String[] movies = {"The Shawshank Redemption", "The Godfather", "The Dark Knight", "Forrest Gump", "Inception"};
MovieGenerator generator = new MovieGenerator(movies);
// test next()
for (int i = 0; i < 10; i++) {
System.out.println(generator.next());
}
// test fill() and printList()
List<String> list = new ArrayList<>();
generator.fill(list);
generator.printList(list);
// test fill() and printSet()
Set<String> set = new TreeSet<>();
generator.fill(set);
generator.printSet(set);
// test fill() and print array
String[] str = new String[movies.length];
generator.fill(str);
System.out.println(Arrays.toString(str));
}
```
阅读全文