下面是我的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)
有人可以帮我这个吗?
我使用java8的最新项目,发现处理Collection类型非常方便,它给了我很大的惊喜.但突然觉得一些传统的语法是如此繁琐,例如我有一个名为BuyerOrderCountStats的Object,每次买家提交订单,都会增加他的订单数,
BuyerOrderCountStats bocs = ...;
bocs.setOrderCount(bocs.getOrderCount()+1);
Run Code Online (Sandbox Code Playgroud)
在java 8中有哪些方便的方式我不知道?
我需要在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作为参数,然后用户可能很容易被/缺少参数混淆.
并且显然设置field1为final不起作用.
我该怎么做才能防止上面提到的问题?
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中我想计算年龄..
我正在使用"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年龄..在谷歌我已经尝试了很多,但没有找到任何使用日期格式的正确示例
我有一个: List<Map<String, Long>> items = new ArrayList<>();
我想得到一个Map,其中键被分组,值是总和.
示例:列表
结果:地图
我知道如何以"长"方式执行此操作,但尝试使用java 8功能发现lambda/streaming/groupby方法.有什么想法吗?
我有哈希图: 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()..)?
我正在尝试转换List为HashMap使用流.这是我的代码..
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则可以添加空字符串.可能吗?如果没有,为什么呢?请帮忙.
是否可以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) 我有一张地图.让我们说吧
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 ×10
java-8 ×6
java-stream ×5
lambda ×2
setter ×2
collections ×1
dictionary ×1
final ×1
foreach ×1
generics ×1
hashmap ×1
jodatime ×1
list ×1