可以说我有一个房间列表
List<Room> rooms;
Run Code Online (Sandbox Code Playgroud)
每个房间都有人员名单.
使用java8流我想迭代房间列表,获取所有人,在每个节点上执行一些方法(doSomething())并获得所有过滤对象的列表.
这是使用java 8的最佳实践吗?
List<Asset> pesonsList= new ArrayList<>();
for (Room room : rooms)
room.getPersonsList().stream()
.filter(person -> person.isTall())
.forEach(person -> {
doSomething(person);
pesonsList.add(person);
});
Run Code Online (Sandbox Code Playgroud) 我正在使用Java 8 Streams从csv文件创建流.我正在使用BufferedReader.lines(),我阅读了以下文档BufferedReader.lines():
在执行终端流操作之后,不能保证读取器将处于从中读取下一个字符或行的特定位置.
public class Streamy {
public static void main(String args[]) {
Reader reader = null;
BufferedReader breader = null;
try {
reader = new FileReader("refined.csv");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
breader = new BufferedReader(reader);
long l1 = breader.lines().count();
System.out.println("Line Count " + l1); // this works correctly
long l2 = breader.lines().count();
System.out.println("Line Count " + l2); // this gives 0
}
}
Run Code Online (Sandbox Code Playgroud)
它看起来像是第一次读取文件后,读者无法进入文件的开头.解决这个问题的方法是什么?
我有一个String title和一个List<String> bannedSubstrings.现在我想执行一行检查是否title没有bannedSubstrings.
我的方法:
if(bannedSubstrings.stream().filter(bannedSubstring -> title.contains(bannedSubstring)).isEmpty()){
...
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有isEmpty()流的方法.那你怎么解决这个问题呢?有一线解决方案吗?
有没有更好的方法来计算地图中所有列表的大小?那么firstList.size() + secondList.size()?我已经这样做了,但创建一个仅用于计数的列表并不是正确的方法..
public static void main(String[] args) {
List<String> firstList = new ArrayList<>();
firstList.add("first");
List<String> secondList = new ArrayList<>();
secondList.add("second");
Map<String, List<String>> myMap = new HashMap<>();
myMap.put("one", firstList);
myMap.put("two", secondList);
int size = myMap.entrySet().stream()
.map(entry -> entry.getValue())
.flatMap(list -> list.stream())
.collect(Collectors.toList())
.size();
System.out.println("Size of all elements in map is:" + size);
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个
List<int[]> input = ( {1,2,3}, {1,2,4},
{1,2,7}, {1,3,1}, {2,2},
{1,2,8}, {1,3,4}, {2,3})
Run Code Online (Sandbox Code Playgroud)
我需要把它转换成
Map<int[] , int[]> result = { [{1,2} -> {3,4,7,8}] ,
[{1,3} -> {1,4}] ,
[{2} -> {2,3}] }
Run Code Online (Sandbox Code Playgroud)
有效地,映射的关键是常见值,直到数组长度为2,值应包含所有这些数组的最后一个元素.
有人可以建议我如何使用java流来获取它,因为在正常的循环中,所有这些都是非常复杂的事情吗?
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则可以添加空字符串.可能吗?如果没有,为什么呢?请帮忙.
java ×8
java-8 ×8
java-stream ×7
lambda ×2
collections ×1
dictionary ×1
generics ×1
hashmap ×1
jodatime ×1
list ×1
string ×1