ITPub博客

首页 > 应用开发 > Java > lambda表达式使用

lambda表达式使用

原创 Java 作者:fengwuying121 时间:2019-01-14 17:47:34 0 删除 编辑

package test;


import java.util.ArrayList;

import java.util.Arrays;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Set;

import java.util.function.Function;

import java.util.stream.Collectors;


public class StreamTest {

public static void main(String args[]){

StreamTest aa=new StreamTest();

aa.lambdaTest();

}

public void lambdaTest() {

final Function<Object, String> mValOrEmpty = (val) -> (val == null ? "" : val.toString());

Map<String, Integer> map1 = new HashMap<>();

map1.put("1", 2);

map1.put("2", 3);

map1.put("3", 4);

map1.put("4", 5);

Map<String, Integer> map2 = new HashMap<>();

map2.put("5", 6);

map2.put("7", 8);

map2.put("9", 10);

Set<String> set4 = getSum1(map2);

System.out.println("取出k+v>10 的元素并返回对应的k:" + set4);

List<Map<String, Integer>> list = new ArrayList<>();

list.add(map1);

list.add(map2);

List<Integer> newList=new ArrayList<Integer>();


// 遍历map集合的元素


list.stream().forEach(map -> map.forEach((k, v) -> System.out.println("key:value = " + k + ":" + v)));


// (1)采用forEach+if 的条件判断来实现

list.stream().forEach(map -> map.forEach((k, v) -> {

if ((v + Integer.valueOf(k)) > 10) {

System.out.println("符合条件的k:v =" + k + ":" + v);

}

//对于特殊条件的值 放入新的list

if("5".equals(k)) {

System.out.println("特殊条件的值:"+k+":"+v);

newList.add(map.get(k));

}

}));

// (2) 调用判断方法来实现

list.stream().filter(map -> getSum(map))

.forEach(map -> map.forEach((k, v) -> System.out.println("key:value = " + k + ":" + v)));


List<Integer> list1= Arrays.asList(1,2,3,4,5,6,7,8,9,10);


       System.out.println("ints sum is:" + list1.stream().reduce(0, (sum, item) -> sum + item));//1+1+2+3+4+...


}


// 判断map中所有元素的k+v+k+v... 的总和是否>10


public boolean getSum(Map<String, Integer> map1) {


Set<Entry<String, Integer>> set = map1.entrySet();


int sum = 0;


for (Entry entry : set) {


String key = entry.getKey().toString();


String value = entry.getValue().toString();


sum += Integer.valueOf(key) + Integer.valueOf(value);


}


if (sum > 10) {


return true;


}


return false;


}


// 取出k+v>10 的元素并返回对应的k


public Set<String> getSum1(Map<String, Integer> map1) {


Set<String> set = map1.keySet();


Set<String> set1 = set.stream().filter(key -> ((Integer.valueOf(key) + map1.get(key).intValue()) > 10))

.collect(Collectors.toSet());


return set1;


}


/*

* @Test public void listTest(){

* 

* List<String> items = new ArrayList<>();

* 

* items.add("A");

* 

* items.add("B");

* 

* items.add("C");

* 

* items.add("D");

* 

* items.add("E");

* 

* items.stream()

* 

* .filter(s->s.equals("B"))

* 

* .forEach(System.out::println);

* 

* 

* 

* }

*/

}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30180323/viewspace-2557291/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-03-27

  • 博文量
    61
  • 访问量
    44771