我有一个项目集合
List<String> lstRollNumber = new ArrayList<String>();
lstRollNumber.add("1");
lstRollNumber.add("2");
lstRollNumber.add("3");
lstRollNumber.add("4");
Run Code Online (Sandbox Code Playgroud)
现在我想搜索RollNumber该集合中的特定内容.说
String rollNumberToSearch = "3";
Run Code Online (Sandbox Code Playgroud)
我可以通过循环遍历集合并检查每个项目来轻松完成,如果有任何匹配,我可以突破循环并从函数返回true.
但是我想使用Lambda表达式来做这件事.
在C#中我们使用(以及其他选项),
var flag = lstRollNumber.Exists(x => x == rollNumberToSearch);
Run Code Online (Sandbox Code Playgroud)
如何在Java 1.8中做同样的事情?
我试过了
String rollNumberToSearch = "3";
Stream<String> filterRecs = lstRollNumbers.stream().filter(rn -> rn.equals(rollNumberToSearch));
Run Code Online (Sandbox Code Playgroud)
但我知道这是错的?请指导.
我想得到今天和今天一年后的日期.例如,如果今天是2015-9-18,明年是2016-9-18.
我想用Java LocalDate.
我正在玩Java 8并尝试使用stream().我想实现的是说,我有一个名单[1,2,3,4],我要加倍的偶数2和4,然后用更新的值返回列表.所以,我会得到[1,4,3,8]结果.我试过以下但它只返回了[4,8].
List<Integer> myList =
Arrays.asList(1,2,3,4);
myList = myList
.stream()
.filter(n -> n%2==0)
.map(n -> n*2)
.collect(Collectors.toList());
System.out.println(myList);
Run Code Online (Sandbox Code Playgroud)
有办法做我想要的吗?
我这样做时遇到了这个错误
LocalDate.parse(expirationDate,DateTimeFormatter.ofPattern("MM/yy");
java.time.format.DateTimeParseException: Text '09/14' could not be parsed at index 5
Run Code Online (Sandbox Code Playgroud)
我和建筑师一起测试但是我不知道怎么做?
有人有一些线索吗?
谢谢!
假设我有一个品牌对象列表.POJO包含一个返回字符串的getName().我想Map<String, Brand>
用String作为名称来构建一个
...但我希望密钥不区分大小写.
如何使用Java流来完成这项工作?试:
brands.stream().collect(Collectors.groupingBy(brand -> brand.getName().toLowerCase()));
Run Code Online (Sandbox Code Playgroud)
不起作用,我认为是因为我没有正确使用groupBy.
所以我试图仅使用Stream来计算ArrayList中的对象数.我正在使用stream.count但是只返回1,因为我的列表有多个对象.这是一些代码:
static ArrayList<Person> people = new ArrayList<>();
void loadCourses(){ // putting Person objects in the list }
public void countPeople()
{
Stream<ArrayList<Person>> stream1 = Stream.of(people);
long l = stream1.count();
System.out.println("Number of people loaded: " + l);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏:)
我有以下顺序代码,使用另一个键列表从哈希映射中删除条目.地图大小可以是50-100k条目,删除密钥列表可以是2k - 10k.我正在寻找使用新的java-8流的解决方案......
List<Long> removed = new ArrayList<Long>();
for (Long k : removelist) {
if (null != map.remove(k)) {
removed.add(k);
}
}
Run Code Online (Sandbox Code Playgroud) 是否可以根据其他列表中的条目减少列表?
这是类似的东西:
list1.forEach(l1 -> {
list2.forEach(l2 -> {
if (l1.getId() == l2.getId())
reducedActions.add(l2); // that's the new list where the filtered entries should be add
});
});
Run Code Online (Sandbox Code Playgroud)
编辑:我所感谢的:
l1: 10, 15, ,16
l2: 1, 2, 12, 10, 11, 14, 16
reducedActions: 10, 16
Run Code Online (Sandbox Code Playgroud) 我有两种类型的处理实现.不确定为什么流forEach循环抱怨变量'i'必须是final.但如果最终,那么如何解决计算'i'的逻辑问题?
public static void main(String[] args) {
String str = "123456789";
int i = 0;
//Non Stream
for (char c : str.toCharArray()) {
if (c >= 48 && c <= 57) {
i = i * 10 + (c - 48);
}
}
System.out.println(i);
i = 0;
// WHY compiler fails for variable 'i' here?
str.chars().forEach((c) -> {
if (c >= 48 && c <= 57) {
i = i * 10 + (c - 48);
}
});
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud) 我想创建一个基本程序,通过lambdas 输入将字符串的第一个字符转换为大写
singhakash
Run Code Online (Sandbox Code Playgroud)
产量
Singhakash
Run Code Online (Sandbox Code Playgroud)
我试过了
String st = "singhakash";
//approach 1
System.out.print(st.substring(0, 1).toUpperCase());
st.substring(1).codePoints()
.forEach(e -> System.out.print((char) e));
System.out.println();
//approach 2
System.out.print(st.substring(0, 1).toUpperCase());
IntStream.range(0, st.length())
.filter(i -> i > 0)
.mapToObj(st::charAt)
.forEach(System.out::print);
Run Code Online (Sandbox Code Playgroud)
但对于这两种情况,我必须单独打印第一个字符.如果没有单独的打印声明,我有什么方法可以做到这一点?
注意:我通常可以通过循环或任何其他方法来做到这一点,但我正在寻找lambdas唯一的解决方案.
谢谢