当前位置: 首页 > news >正文

长春网站建设推荐网诚传媒常德网站建设公司

长春网站建设推荐网诚传媒,常德网站建设公司,广电如何做视频网站,德国购物网站大全日常开发中,我们可能会遇到这样一种情况,需要对数据库查询出来的数据进行一个二次处理,从而达到我们需要的数据结构。stream流正是java8提供的对复杂list操作方便工具。 我们先介绍如何使用stream流根据对象属性对复杂list对象去重&#xff0…

日常开发中,我们可能会遇到这样一种情况,需要对数据库查询出来的数据进行一个二次处理,从而达到我们需要的数据结构。stream流正是java8提供的对复杂list操作方便工具。
我们先介绍如何使用stream流根据对象属性对复杂list对象去重,再介绍一下stream流最常用的一些操作:

使用stream流根据对象属性对复杂list对象去重

例子1

实体类:

import lombok.Data;@Data
public class SyncUserDto {private String id;private String name;private String code;private String departmentCode;private String departmentName;private String position;private String phone;private String mobile;private String email;private Integer sex;private String idcard;private Integer status;private String account;private String weighting;private String photourl;private String openid;private String userid;
}

去重操作:

            //去重ArrayList<SyncUserDto> collect = syncUserDtos.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>((o1, o2) -> {if (o1.getAccount().compareTo(o2.getAccount()) == 0) {return 0;} else {return o1.getAccount().compareTo(o2.getAccount());}})), ArrayList::new));

例子2

实体类:

public class User {private String id;private String name;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public User(String id, String name) {super();this.id = id;this.name = name;}
}

去重:

public class Demo {public static void main(String[] args) {List<User> list = new ArrayList<>();User u1 = new User("a", "aaa");User u2 = new User("a", "aaa");User u3 = new User("b", "aaa");User u4 = new User("a", "b");User u5 = new User("b", "a");list.add(u1);list.add(u2);list.add(u3);list.add(u4);list.add(u5);list.add(u1);list.add(u2);list.add(u3);list.add(u4);list.add(u5);List<User> unique=list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>((o1,o2)->{if (o1.getName().compareTo(o2.getName()) == 0) {return 0;} else {return o1.getName().compareTo(o2.getName());}})), ArrayList::new));System.out.println("根据对象属性name进行去重");System.out.println("----------	去重前----------");System.out.println("集合中元素的个数为:"+list.size());for (User user : list) {System.out.println(user.toString()+"--姓名:"+user.getName());}System.out.println("-----------去重后----------");System.out.println("集合中元素的个数为:"+unique.size());for (User user : unique) {System.out.println(user.toString()+"--姓名:"+user.getName());}}
}

stream流常用操作

forEach():遍历流中的对象

public class Aoo {public static void main(String[] args) {// 定义一个集合ArrayList<String> list = new ArrayList<>();list.add("张三");list.add("李四");list.add("李四");list.add("李四");list.add("李四");list.add("李四");list.add("李四");//遍历流的对象list.stream().forEach((name) -> System.out.println(name));}

filter():filter对流对象进行过滤

 
public class Aoo {public static void main(String[] args) {// 定义一个集合ArrayList<String> list = new ArrayList<>();list.add("张三");list.add("李四二");list.add("李四我");list.add("李四去晚");list.add("李四请问");list.add("李四去");list.add("李四我");//过滤流的对象list.stream().filter((name) -> name.length()==2);}

map():map()是对集合中的对象进行映射的,将对象从一种类型转换成另一种类型

 
public class Aoo {public static void main(String[] args) {// 定义一个集合ArrayList<String> list = new ArrayList<>();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");list.add("6");list.add("7");//map()是对集合中的对象进行映射的,将对象从一种类型转换成另一种类型list.stream().map(num -> Integer.parseInt(num));}}

count():count是对流数据统计的方法,但是count之后返回的是long类型,所以无法再进行流操作。

public class Aoo {public static void main(String[] args) {// 定义一个集合ArrayList<String> list = new ArrayList<>();list.add("1");list.add("2");list.add("3");list.add("4");list.add("5");list.add("6");list.add("7");//count()对流数据进行统计System.out.println(list.stream().count());}}

limit():选取流数据的前多少条数据

 
public class Aoo {public static void main(String[] args) {// 定义一个集合ArrayList<String> list = new ArrayList<>();list.add("李四1");list.add("李四2");list.add("李四3");list.add("李四4");list.add("李四5");list.add("李四6");list.add("李四7");//limit() 选取流数据的前多少条数据list.stream().limit(2);}
}

skip():跳过流数据的前多少条数据,该方法与limit()方法刚好相反

public class Aoo {public static void main(String[] args) {// 定义一个集合ArrayList<String> list = new ArrayList<>();list.add("李四1");list.add("李四2");list.add("李四3");list.add("李四4");list.add("李四5");list.add("李四6");list.add("李四7");//skip() 跳过流数据的前多少条数据list.stream().skip(2);}
}

concat():Stream的静态方法concat()实现对两个流数据进行合并

public class Aoo {public static void main(String[] args) {// 定义一个集合ArrayList<String> list = new ArrayList<>();list.add("李四1");list.add("李四2");list.add("李四3");list.add("李四4");list.add("李四5");list.add("李四6");list.add("李四7");// 定义一个集合ArrayList<String> list1 = new ArrayList<>();list1.add("1");list1.add("2");list1.add("3");list1.add("4");list1.add("5");list1.add("6");list1.add("7");//concat()实现对两个流数据进行合并Stream.concat(list.stream(),list1.stream());}}
http://www.yidumall.com/news/23058.html

相关文章:

  • 崇明建设小学网站全球访问量top100网站
  • 做网站常见的语言全网营销推广靠谱吗
  • 可信的郑州网站建设汕头seo推广
  • 成都网站建设 小兵百度云搜索引擎官方入口
  • 做期货网站违法的吗云南网络营销公司哪家好
  • wordpress开启加载图标库网络优化工程师工作内容
  • flash做ppt的模板下载网站站长工具爱情岛
  • 网站节点加速seo咨询推广
  • 网站开发简历项目怎么开设自己的网站
  • 品牌网站制作公司哪家好品牌营销策划培训课程
  • 南山网站制作联系电话营销网络营销
  • 编程网站开发培训做优化关键词
  • 金融直播间网站开发百度网页怎么制作
  • 网站建设 协议书 doc谷歌seo软件
  • 华硕建设公司网站浙江疫情最新情况
  • 临沂医院网站建设发软文的网站
  • 彩票网站开发风险优化营商环境工作开展情况汇报
  • 微信清粉网站开发百度搜索风云榜排名
  • 淮安网站建设报价网站推广的方法有哪些
  • 织梦 图片网站网址域名大全
  • 阜阳网站建设无锡做网站的公司
  • 如何做网站首页优化长沙官网seo技术
  • 乐山住房和城乡建设厅网站上百度首页
  • 焦作企业网站建设商业策划公司十大公司
  • 建设读书网站的意义世界十大网站排名
  • 咸宁网站建设哪家专业海淀区seo搜索优化
  • 办公室装修设计网站网站推广的基本方法是
  • 上海专业做网站好的竞价账户托管外包
  • 企业网站建设原则有哪些网页游戏推广平台
  • 好订单网服装外发加工360优化大师最新版下载