标签: java-8

如何使用Lambda在java1.8中搜索字符串集合中的特定项?

我有一个项目集合

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)

但我知道这是错的?请指导.

java lambda java-8 java-stream

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

获得明年的约会

我想得到今天和今天一年后的日期.例如,如果今天是2015-9-18,明年是2016-9-18.

我想用Java LocalDate.

java java-8 java-time

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

修改列表的一部分,然后返回更新的列表

我正在玩Java 8并尝试使用stream().我想实现的是说,我有一个名单[1,2,3,4],我要加倍的偶数24,然后用更新的值返回列表.所以,我会得到[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)

有办法做我想要的吗?

java java-8 java-stream

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

patternin MM/yy的DateTimeFormatter

我这样做时遇到了这个错误

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)

我和建筑师一起测试但是我不知道怎么做?

有人有一些线索吗?

谢谢!

java java-8

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

groupingBy应该使用String时,将key作为Map返回

假设我有一个品牌对象列表.POJO包含一个返回字符串的getName().我想Map<String, Brand> 用String作为名称来构建一个 ...但我希望密钥不区分大小写.

如何使用Java流来完成这项工作?试:

brands.stream().collect(Collectors.groupingBy(brand -> brand.getName().toLowerCase()));
Run Code Online (Sandbox Code Playgroud)

不起作用,我认为是因为我没有正确使用groupBy.

java java-8 java-stream

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

使用Java8 Stream计算列表中的对象数

所以我试图仅使用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)

任何帮助表示赞赏:)

java java-8 java-stream

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

ConcurrentHashMap使用并行Streams删除键

我有以下顺序代码,使用另一个键列表从哈希映射中删除条目.地图大小可以是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)

java concurrent-programming java-8

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

使用其他列表中的值减少列表

是否可以根据其他列表中的条目减少列表?

这是类似的东西:

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)

java lambda java-8 java-stream

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

带有ForEach迭代问题的Java Stream

我有两种类型的处理实现.不确定为什么流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)

java foreach java-8 java-stream

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

仅使用java 8 lambdas将字符串的第一个字符转换为大写

我想创建一个基本程序,通过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唯一的解决方案.

谢谢

java string lambda uppercase java-8

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