jdk8 Lambda表达式 集合过滤,排序,最大值,最小值,平均值等操作

warning: 这篇文章距离上次修改已过1256天,其中的内容可能已经有所变动。

package cn.sh.ideal.jdk8;

import cn.sh.ideal.bean.UserBean;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
* Lambda表达式写法
*
* @author gilbert
*/
public class LambdaDemo {

/**
* 功能描述 无参无返回值
*
* @param list
* @return void
* @author gilbert
* @date 2019/6/12
*/
public static void lambdaWithParamAndNoReturn(List list) {
list.forEach(userBean -> System.out.println("hello," + userBean.getUsername()));
}

/**
*功能描述 重新封装集合数据
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void initList(List list){
List userList = list.stream().map(userBean -> new UserBean(userBean.getUserid(), userBean.getWorkid(), userBean.getUsername())).collect(Collectors.toList());
userList.forEach(userBean -> System.out.println("new list:" + userBean.getUsername()));
}

/**
*功能描述 集合过滤
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void filterList(List list){
//List filterList = list.stream().filter(userBean -> userBean.getUsername().contains("g")).collect(Collectors.toList());
List filterList = list.stream().filter(userBean -> Integer.valueOf(userBean.getUserid()) > 6).collect(Collectors.toList());
filterList.forEach(userBean -> System.out.println("filter list:" + userBean.getUsername()));
}

/**
*功能描述 排序
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void sortList(List list){
//按userid排序
List sortList = list.stream().sorted((userBean1,userBean2) -> userBean1.getUsername().compareTo(userBean2.getUsername())).collect(Collectors.toList());
sortList.forEach(userBean -> System.out.println("sortList:" + userBean.getUserid() + "," + userBean.getUsername()));
}

/**
*功能描述 多条件排序
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void multiSortList(List list){
list.sort(Comparator.comparing(UserBean::getUserid).thenComparing(UserBean::getUsername));
list.forEach(userBean -> System.out.println("multiSortList:" + userBean.getUserid() + "," + userBean.getUsername()));
}

/**
*功能描述 倒序
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void reversedSortList(List list){
//第一种写法
Comparator comparator = (userBean1,userBean2) -> userBean1.getUsername().compareTo(userBean2.getUsername());
list.sort(comparator.reversed());
//第二种写法
//list.sort(Comparator.comparing(UserBean::getUserid).reversed());

list.forEach(userBean -> System.out.println("reverseSortList:" + userBean.getUserid() + "," + userBean.getUsername()));
}

/**
*功能描述 多条件倒序
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void multiReversedSortList(List list){
list.sort(Comparator.comparing(UserBean::getUserid).thenComparing(UserBean::getUsername).reversed());
list.forEach(userBean -> System.out.println("multiReversedSortList:" + userBean.getUserid() + "," + userBean.getUsername()));
}

/**
*功能描述 集合分组
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void groupByList(List list){
Map> groupByMap = list.stream().collect(Collectors.groupingBy(UserBean::getWorkid));
groupByMap.forEach((k,v) -> System.out.println(k+"," + v));
}

/**
*功能描述 求和
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void sumByList(List list){
System.out.println("sum="+ list.stream().mapToInt(UserBean::getUserid).sum());
}

/**
*功能描述 最大值
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void maxByList(List list){
OptionalInt optional = list.stream().mapToInt(UserBean::getUserid).max();
System.out.println("max=" + optional.getAsInt());
}

/**
*功能描述 最小值
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void minByList(List list){
OptionalInt optional = list.stream().mapToInt(UserBean::getUserid).min();
System.out.println("min=" + optional.getAsInt());
}

/**
*功能描述 平均值
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void averageByList(List list){
OptionalDouble optionalDouble = list.stream().mapToInt(UserBean::getUserid).average();
System.out.println("average=" + optionalDouble.getAsDouble());
}

/**
*功能描述 List转map
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void listToMap(List list){
//用 (k1,k2)->k1 来设置,如果有重复的key,则保留key1,舍弃key2
Map map = list.stream().collect(Collectors.toMap(UserBean::getUserid,userBean -> userBean, (k1, k2) -> k1));
map.forEach((k,v) -> System.out.println("k=" + k + ",v=" + v));
}

/**
*功能描述 map转list
* @author gilbert
* @date 2019/6/12
* @param [map]
* @return void
*/
public static void mapToList(Map map){
List list = map.entrySet().stream().sorted(Comparator.comparing(key -> key.getKey())).map(key -> new UserBean(Integer.valueOf(key.getKey()),key.getValue(),key.getValue())).collect(Collectors.toList());
list.forEach(userBean -> System.out.println(userBean.getUserid() + "," + userBean.getUsername()));
}

/**
*功能描述 字符串转list
* @author gilbert
* @date 2019/6/12
* @param [str]
* @return void
*/
public static void stringToList(String str){
//不需要处理
// list = Arrays.asList(str.split(","));
//需要处理
List list = Arrays.asList(str.split(",")).stream().map(string -> String.valueOf(string)).collect(Collectors.toList());
list.forEach(string -> System.out.println(string));
}

/**
*功能描述 姓名以逗号拼接
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void joinStringValueByList(List list){
System.out.println(list.stream().map(UserBean::getUsername).collect(Collectors.joining(",")));
}

/**
*功能描述 分组统计
* @author gilbert
* @date 2019/6/12
* @param [list]
* @return void
*/
public static void countByList(List list){
Map map = list.stream().collect(Collectors.groupingBy(UserBean::getWorkid,Collectors.counting()));
map.forEach((k,v) -> System.out.println("key=" + k + ",value=" + v));
}

public static void main(String[] args) {
//List list = Arrays.asList(new UserBean(1, "AKB001", "gilbert"), new UserBean("2", "AKB002", "apple"), new UserBean("3", "AKB003", "cat"));
List list = Stream.of(new UserBean(1, "AKB001", "gilbert"),
new UserBean(2, "AKB002", "apple"),
new UserBean(4, "AKB004", "dog"),
new UserBean(5, "AKB005", "egg"),
new UserBean(6, "AKB006", "frog"),
new UserBean(6, "AKB006", "banana"),
new UserBean(7, "AKB007", "google"),
new UserBean(3, "AKB003", "cat"))
.collect(Collectors.toList());
lambdaWithParamAndNoReturn(list);
initList(list);
filterList(list);
sortList(list);
reversedSortList(list);
multiSortList(list);
multiReversedSortList(list);
groupByList(list);
sumByList(list);
maxByList(list);
minByList(list);
averageByList(list);
listToMap(list);
String str = "apple,banana,cat,dog";
stringToList(str);
Map map =new HashMap() {
{
put(1, "apple");
put(2, "banana");
put(3, "cat");
put(4, "dog");
put(5, "frog");
}
};
mapToList(map);
joinStringValueByList(list);
countByList(list);
}
}

版权声明 ▶ 本网站名称:我的学习笔记
▶ 本文链接:https://ooolo.net/article/14.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!!

none
最后修改于:2019年12月24日 16:46

添加新评论

icon_mrgreen.pngicon_neutral.pngicon_twisted.pngicon_arrow.pngicon_eek.pngicon_smile.pngicon_confused.pngicon_cool.pngicon_evil.pngicon_biggrin.pngicon_idea.pngicon_redface.pngicon_razz.pngicon_rolleyes.pngicon_wink.pngicon_cry.pngicon_surprised.pngicon_lol.pngicon_mad.pngicon_sad.pngicon_exclaim.pngicon_question.png