Tag: 集合

我应该返回一个集合或stream?

假设我有一个将只读视图返回给成员列表的方法: class Team { private List<Player> players = new ArrayList<>(); // … public List<Player> getPlayers() { return Collections.unmodifiableList(players); } } 进一步假设所有客户端都立即迭代列表一次。 也许把玩家放入JList或其他东西。 客户端不存储对列表的引用以供以后检查! 鉴于这种常见的情况,我应该返回一个stream吗? public Stream<Player> getPlayers() { return players.stream(); } 或者在Java中返回一个非惯用的stream? stream被devise为始终被“终止”在他们创build的相同expression式内?

如何强制max()返回Java Stream中的所有最大值?

我已经testing了Java 8 lambdaexpression式和stream的max()函数,并且似乎在max()被执行的情况下,即使多于一个对象比较为0,它也会返回绑定候选中的任意元素进一步考虑。 是否有一个明显的技巧或function,这样一个最大期望的行为,以便所有的最大值返回? 我没有看到API中的任何内容,但我相信它必须比手动比较更好。 例如: //myComparator is an IntegerComparator Stream.of(1,3,5,3,2,3,5).max(myComparator).forEach(System.out::println); //Would print 5,5 in any order.

如何最优雅地通过并行集合迭代?

假设我有两个平行的集合,例如:一个List<String>的人名列表,以及一个在List<Int>中的年龄列表,其顺序是相同的(所以每个集合中的任何给定索引都指向同一个人)。 我想同时遍历这两个集合,并获取每个人的名字和年龄,并用它做一些事情。 对于数组,这很容易完成: for (int i = 0; i < names.length; i++) { do something with names[i] …. do something with ages[i]….. } 用集合来做这件事最优雅的方式(就可读性和速度而言)是什么?

inheritance自List <T>

实现从List<T>inheritance的新类的最快方法是什么? class Animal {} class Animals : List<Animal> {} // (1) 我遇到的一个问题:通过简单地做(1) ,我发现我没有得到从List<T>inheritance任何构造函数的好处。 最后,我想Animals行为很像一个List<T> (例如,可以构build,与Linq兼容)。 但是,另外,我也希望能够添加我自己的自定义方法。

什么是最有效的Java Collections库?

什么是最有效的Java Collections库? 几年前,我做了很多Java,并且有一个印象,那就是这个库是最好的(最高效的)Java Collections实现。 但是当我阅读“ 最有用的免费Java库 ”的答案时,我注意到几乎没有提到这个库 。 那么现在哪个Java Collections库最好? 更新:为了澄清,我主要想知道什么库,当我必须存储数百万条目哈希表等(需要一个小的运行时间和内存占用)。

如何通过属性对对象的数组列表进行sorting?

让我们假设你有一个HockeyPlayer对象的Arraylist 。 你怎么能sorting,如果他们都有一个variablesint goalsscored 。 你怎么能通过目标进行sorting呢?

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

假设,我有一个固定数量的集合(例如3个ArrayLists)作为一个类的成员。 现在,我想将所有元素公开给其他类,以便它们可以遍历所有元素(理想情况下,只读)。 我正在使用番石榴集合,我想知道如何使用番石榴iterables /迭代器生成内部集合的逻辑视图, 而不做临时副本。

对原始集合的Hibernatevalidation

我希望能够做到这样的事情: @Email public List<String> getEmailAddresses() { return this.emailAddresses; } 换句话说,我希望列表中的每个项目都被validation为一个电子邮件地址。 当然,注释这样的集合是不可接受的。 有没有办法做到这一点?

List(T)和Collection(T)之间有什么区别?

我已经看到他们用了很多相同的方式,而且我担心如果我不能更好地理解这一点,我即将走上一条不可逆转的devise道路。 另外,我正在使用.NET。

如何将Java对象(bean)转换为键值对(反之亦然)?

说我有一个非常简单的java对象,只有一些getXXX和setXXX属性。 该对象仅用于处理值,基本上是一个logging或一个types安全(和高性能)的地图。 我经常需要将该对象转换为键值对(string或types安全),或者将键值对转换为此对象。 除了reflection或手动编写代码来完成这个转换,最好的方法是什么? 一个示例可能是通过jms发送此对象,而不使用ObjectMessagetypes(或将传入消息转换为正确types的对象)。