我正在尝试随机化一个对象:Map
目前我还没有编译我的代码。所以我的代码是这样的:
MapRandomizer<Author, List<Book>> mapRandomizer = new MapRandomizer<>(Author.class, ArrayList<Book>.class);
Map<Author, List<Book>> map = mapRandomizer.getRandomValue();
但我不知道如何将列表(ArrayList.class???)作为mapRandomizer的参数。
有谁知道如何让我的代码编译并创建类型为 Map 的随机对象?
Author author1 = generator.nextObject(Author.class);
Author author2 = generator.nextObject(Author.class);
Author author3 = generator.nextObject(Author.class);
List< Book> bookList1= generator.objects(Book.class, 3).collect(Collectors.toList());
List< Book> bookList2= generator.objects(Book.class, 2).collect(Collectors.toList());
List< Book> bookList3= generator.objects(Book.class, 4).collect(Collectors.toList());
Map< Author, List< Book>> map= new HashMap<>();
map.put(author1 , bookList1);
map.put(author2 , bookList2);
map.put(author3 , bookList3);
Author
和
Book
)。将它们放入列表和地图中只是创建适当的容器。所以你真正可能拥有的是
class MapRandomizer<K, List<E>> {
private ItemRandomizer<K> keyRandomizer;
private ListRandomizer<E> listRandomizer;
public Map<K, List<E>> createMap() {
// random count, for each entry create random K and random List<E>
// using keyRandomizer and listRandomizer
}
}
与
class ListRandomizer<E> {
private ItemRandomizer<E> entryRandomizer;
public List<E> createList() {
// random count, fill list with that amount of entries
// using the entry randomizer
}
}
然后你可以使用创建具体的随机发生器
MapRandomizer<Author, List<Book>> randomizer = new MapRandomizer<>(
new AuthorRandomizer(), new ListRandomizer<Book>(new BookRandomizer())
);
在此,AuthorRandomizer
和
BookRandomizer
将需要分别实现
ItemRandomizer<Author>
和
ItemRAndomizer<Book>
。