如何在 Java 中使用 EasyRandom 随机化对象:Map<Author, List<Book>>?

问题描述 投票:0回答:2

我正在尝试随机化一个对象:Map与easyRandom进行测试。

目前我还没有编译我的代码。所以我的代码是这样的:

MapRandomizer<Author, List<Book>> mapRandomizer = new MapRandomizer<>(Author.class, ArrayList<Book>.class);
        Map<Author, List<Book>> map = mapRandomizer.getRandomValue(); 

但我不知道如何将列表(ArrayList.class???)作为mapRandomizer的参数。

有谁知道如何让我的代码编译并创建类型为 Map 的随机对象?

谢谢你,

java dictionary random randomized-algorithm
2个回答
0
投票
现在我正在努力做长远的事情:

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);
    

0
投票
如果不创建随机条目,您就无法真正创建随机地图。您需要能够随机创建每个包含的类型(在您的示例中为

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>

© www.soinside.com 2019 - 2024. All rights reserved.