相关疑难解决方法(0)

将多个集合合并为一个逻辑集合?

假设,我有一个恒定数量的集合(例如3个ArrayLists)作为类的成员.现在,我想将所有元素公开给其他类,以便它们可以简单地遍历所有元素(理想情况下,只读).我正在使用guava集合,我想知道如何使用guava iterables/iterators来生成内部集合的逻辑视图,而无需制作临时副本.

java collections guava

107
推荐指数
3
解决办法
11万
查看次数

使用Gson将JSON数组解析为java.util.List

我有一个JsonObject名为"mapping"以下内容:

{
    "client": "127.0.0.1",
    "servers": [
        "8.8.8.8",
        "8.8.4.4",
        "156.154.70.1",
        "156.154.71.1"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以得到数组"servers":

mapping.get("servers").getAsJsonArray()
Run Code Online (Sandbox Code Playgroud)

现在我想解析JsonArrayjava.util.List...

最简单的方法是什么?

java parsing json gson

104
推荐指数
3
解决办法
16万
查看次数

Spring-Data JPA CrudRepository返回Iterable,将它转换为List是否可以?

我正在编写一个代码生成工具来使用Spring-Data-Jpa为Spring启动应用程序生成后端连接代码,而且我很温和地告诉我CrudRepository中的方法返回Iterable而不是List,因为iterable不能提供足够的功能,但List,所以我正在寻找将iterable转换为列表的最佳方法.

我看到这篇关于将迭代更改为集合的帖子我想知道,为什么不将它转换为List,而不是使用像Guava这样的库或实现我自己的函数来进行转换?这样做我不知道有什么问题吗?

编辑:我问,因为它是一个代码生成工具,使它生成引入第三方库依赖的代码是不合理的,编写我自己的函数来进行转换也不合理,因为它必须住在某个地方而且我宁愿在生成的代码中没有它.一个简单的演员会有用,如果有点难看,但只是想知道是否有我遗失的东西?

java spring spring-data spring-data-jpa spring-boot

26
推荐指数
4
解决办法
3万
查看次数

是否有任何Java标准类在没有实现Collection的情况下实现Iterable?

我有一个难题,这让我思考是否有任何标准的java类在Iterable<T>没有实现的情况下实现Collection<T>.我正在实现一个接口,它要求我定义一个接受一个的方法Iterable<T>,但我用来支持这个方法的对象需要一个Collection<T>.

这让我做了一些真正的kludgy感觉代码,在编译时会给出一些未经检查的警告.

public ImmutableMap<Integer, Optional<Site>> loadAll(
        Iterable<? extends Integer> keys
) throws Exception {
    Collection<Integer> _keys;
    if (keys instanceof Collection) {
        _keys = (Collection<Integer>) keys;
    } else {
        _keys = Lists.newArrayList(keys);
    }

    final List<Site> sitesById = siteDBDao.getSitesById(_keys);
    // snip: convert the list to a map
Run Code Online (Sandbox Code Playgroud)

更改生成的集合以使用更通用的Collection<? extends Integer>类型不会消除该行的未经检查的警告.此外,我无法更改方法签名以接受Collection而不是Iterable因为它然后它不再覆盖超级方法,并且在需要时不会被调用.

目前似乎没有被周围的方式该铸造或拷贝的问题:其他问题都得到了一个在别处问这里,似乎深深扎根于Java的泛型和类型擦除系统.但我要问的是,是否有任何可以实现的类Iterable<T>还没有实现Collection<T>?我已经浏览了IterableJavaDoc,当然我希望传递给我的界面的所有内容实际上都是一个集合.我想使用一个在野外预编写的类,因为它似乎更有可能实际作为参数传递,并使单元测试更有价值.

由于我正在写的一些单元测试,我确定我编写的演员或复制位与我在项目中使用它的类型一起工作.但我想编写一个单元测试的一些输入端,一个可迭代但不是一个集合,到目前为止,所有我已经能够拿出正在实施一个虚拟的测试类实现自己.


好奇的是,我正在实现的方法是Guava CacheLoader<K, V>.loadAll(Iterable<? …

java generics collections iterable

21
推荐指数
5
解决办法
1742
查看次数

使用Iterable初始化Set

我想用Iterable初始化Java中的Set Implementation(HashSet).但是,HashSet的构造函数不接受Iterables,而只接受Collections类型的对象.

有没有办法从Iterable转换为某些子集类型.

java set

19
推荐指数
3
解决办法
2万
查看次数

有没有一种简单的方法可以将迭代器复制到Java中的列表中?

我想要这样的东西:

public void CopyIteratorIntoList(Iterator<Foo> fooIterator) {
    List<Foo> fooList = new ArrayList<Foo>();
    fooList.addAll(fooIterator);
}
Run Code Online (Sandbox Code Playgroud)

这相当于:

public void CopyIteratorIntoList(Iterator<Foo> fooIterator) {
    List<Foo> fooList = new ArrayList<Foo>();
    while(fooIterator.hasNext())
        fooList.add(fooIterator.next());
}
Run Code Online (Sandbox Code Playgroud)

API中是否有任何方法可以实现,或者这是唯一的方法吗?

java iterator copy list

7
推荐指数
3
解决办法
3920
查看次数

有条件地从Java 8中的列表中删除元素

据我所知,Java 8引入了一种可用于Collection类型的新方法:removeif()。它接受一个谓词,该谓词定义了应删除元素的条件。它返回一个布尔值,其中“真”响应表示已删除至少一个项目,否则返回“假”:我有此类:

HotelPriceSummary {
     Hotel hotel;
     float price
}
Run Code Online (Sandbox Code Playgroud)

一种 List<HotelPriceSummary> allHotels;

Iterable<Hotel> discardedHotels

我想做类似的事情(显然,existIn是一个不存在的函数,是表达我想做的事情,但我没有找到方法)

allHotels.removeIf(h -> h.getHotel().existsIn (discardedHotels))
Run Code Online (Sandbox Code Playgroud)

java collections lambda java-8

0
推荐指数
1
解决办法
3193
查看次数