小编Tag*_*eev的帖子

如何使用lambda在字符串列表的某些元素中执行子字符串

下面是我的String列表.

["sunday", "monday", "tuesday", "wednesday", "fri", "satur"]
Run Code Online (Sandbox Code Playgroud)

我想要做删除"天"从元素;如果它与"天"的结局.如何在Lambda中做到这一点?

列表中的预期输出:

["sun", "mon", "tues", "wednes", "fri", "satur"]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下代码,但无法将值分配给列表

daysList.stream().forEach(s -> { if(s.endsWith("day")) {
        s = s.substring(0, s.indexOf("day"));
    }});
Run Code Online (Sandbox Code Playgroud)

有人可以帮我这个吗?

java foreach lambda java-stream

2
推荐指数
2
解决办法
6828
查看次数

是否存在一些Java8方便的方式来加入对象的属性?

我使用java8的最新项目,发现处理Collection类型非常方便,它给了我很大的惊喜.但突然觉得一些传统的语法是如此繁琐,例如我有一个名为BuyerOrderCountStats的Object,每次买家提交订单,都会增加他的订单数,

BuyerOrderCountStats bocs = ...;
bocs.setOrderCount(bocs.getOrderCount()+1);
Run Code Online (Sandbox Code Playgroud)

在java 8中有哪些方便的方式我不知道?

java setter java-8

2
推荐指数
1
解决办法
59
查看次数

如何允许变量在java中只设置一次

我需要在java中实现一个类,其中的字段只需要设置一次,但它的值在字段声明中是未知的.为此,我有:

public class MyClass {
    private String field1 = null;
    public void setField1(String value) {
        if (field1 == null) {
            field1 = value;
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

但是,我没有阻止用户setField1多次拨打电话.这可能导致用户试图设置它的混乱(不知道它已被设置在其他地方)然后用户会因为field1没有给出他们设置的值而感到困惑- 直到他们进入setField1方法看看发生了什么.

我不喜欢的另一个解决方案是使构造函数接受值field1,然后不提供setter.因为它使得类更难扩展,所以当需要多个String字段时 - 在这种方法中,构造函数需要接受一对String作为参数,然后用户可能很容易被/缺少参数混淆.

并且显然设置field1final不起作用.

我该怎么做才能防止上面提到的问题?

java setter final

2
推荐指数
1
解决办法
1673
查看次数

generic:extends Number&Comparable Basic Understanding

class  MyTest<K,V extends Number & Comparable> implements Comparable<MyTest>{

    private K key;
    private V value;

}
Run Code Online (Sandbox Code Playgroud)

这是什么意思K, V extends Number & Comparable?在上面的语句MyTest中实现了一个类似的接口,但我无法弄清楚K,V为什么有Number&Comparable.k,v不是接口.有人可以就此启发我.

java generics

2
推荐指数
1
解决办法
260
查看次数

在java age计算中返回错误的值

在java中我想计算年龄..

我正在使用"jodatime.jar"

LocalDate today = LocalDate.now();
LocalDate birthdate = new LocalDate ("1990-12-12");
Years age = Years.yearsBetween(birthdate, today);
Run Code Online (Sandbox Code Playgroud)

我希望年龄为integer......它像P25Y那样返回值.如何得到年龄的整数值......我只想要25岁

有没有其他方法来获得日期格式的java年龄..在谷歌我已经尝试了很多,但没有找到任何使用日期格式的正确示例

java jodatime

2
推荐指数
1
解决办法
155
查看次数

Java List <Map <String,Long >>映射键的组合之和

我有一个: List<Map<String, Long>> items = new ArrayList<>();

我想得到一个Map,其中键被分组,值是总和.

示例:列表

  • 项目0
    • foo - > 1
    • 吧 - > 2
  • 第1项
    • foo - > 4
    • 吧 - > 3

结果:地图

  • foo - > 5
  • 吧 - > 5

我知道如何以"长"方式执行此操作,但尝试使用java 8功能发现lambda/streaming/groupby方法.有什么想法吗?

java lambda java-8 java-stream

2
推荐指数
1
解决办法
2820
查看次数

将哈希图拆分为Java 8中的分区

我有哈希图: Map<String, Set<String>> myMap

我想将其拆分为包含Map以下内容的列表:

List<Map<String,Set<String>>> listofMaps;
Run Code Online (Sandbox Code Playgroud)

,每张地图最多可包含100个键。我知道如何以常规方式执行此操作。(在entryset上进行foreach,每100个项目会创建一个新地图)。有什么选择可以用Java 8 lambda或其他东西吗?(有点像Lists.partitions()..)?

java collections hashmap java-8

2
推荐指数
1
解决办法
7984
查看次数

使用流操作基于条件在Java中将List转换为Map

我正在尝试转换ListHashMap使用流.这是我的代码..

attributeUnitMap = attributesList.stream()
    .filter(a -> a.getAttributeUnit() != null)
    .collect(Collectors.toMap(Attribute::getAttributeName, a -> a.getAttributeUnit()));
Run Code Online (Sandbox Code Playgroud)

现在我想添加条件,如果我得到属性名称null,那么应该将项目添加到带有空白字符串的map中,如下所示(any_attributeName,"").

如何使用流操作实现此目的.我知道我可以通过使用过滤条件来检查属性名称是否为null但是如果它为null则可以添加空字符串.可能吗?如果没有,为什么呢?请帮忙.

java dictionary list java-8 java-stream

2
推荐指数
1
解决办法
1820
查看次数

使用索引迭代IntStream

是否可以IntStream使用索引迭代int数组?

试着这样做:

ByteBuf buf = ...;
int[] anArray = ...;

IntStream.of(anArray).forEach(...); // get index so I can do "anArray[index] = buf.x"
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

2
推荐指数
1
解决办法
445
查看次数

Java流 - 验证列表中至少有一个元素包含在另一个元素中

我有一张地图.让我们说吧

Map<Long, Train> 
Run Code Online (Sandbox Code Playgroud)

每列火车都有一份清单

List<Integer> parts = train.getTrainParts()
Run Code Online (Sandbox Code Playgroud)

我有另一个清单

List<Integer> blueParts;
Run Code Online (Sandbox Code Playgroud)

我想迭代地图并收集所有至少有一个蓝色部分的列车.

这是Streams 的天真用法:

trainMap().values().stream().filter(part -> {
     boolean found = false;
     for (Long part : train.getTrainParts()) {
         if (blueParts.conatins(part)) {
              found = true;
         }
     }
     return found;
).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

有什么更好的选择?流还是不流?

例如

 tagDataContainer.getDeliveryGroupMap().values().stream().filter(dg -> {
                Sets.SetView<Long> intersection = Sets.intersection(Sets.newHashSet(dg.getPlacements()), Sets.newHashSet(placementsToChangeStatusToPublish));
                return intersection.size()>0;
       }
 );
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

2
推荐指数
1
解决办法
4735
查看次数