List转set_JAVA数组转set内容不一致

List转set_JAVA数组转set内容不一致list集合和set集合的相互转化

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

该段可忽略———————-


最近做的一个项目中,用到了list转set的应用,索性就发个帖子记录一下。

简单说一下背景,当时是为了实现查询出来的帖子中显示出当前用户对该帖子是否有点赞和收藏的动作,即前端需要当前用户对该帖子的点赞和收藏状态,来标记点赞、收藏按钮,是否为点亮还是灰色。

因为是批量展示帖子,刚开始的做法是取出查询出来的帖子的ids,去到点赞表里查这些帖子的点赞状态。由于我们有自定义的返回体,所以整个过程比较繁琐。后面就用到了list转set的用法,直接去判断set中存不存在点赞的id,存在为true,不存在为false。

上面一段是自己的记录,可忽略直接看下一段。 

 list转set(多出的代码段,结合了部分业务内容)

//获取帖子集合
List<Post> postList=postService.pagePost(req);

//获取所有帖子的ids
list<Long> ids=postList.stream().map(x -> x.getId()).collect(Collectors.toList());

//获取所有点赞帖子的ids
List<Long> likeIds = likeService.selectLikesByIds(ids).stream().map(o ->o.getTargetId()).collect(Collectors.toList());

//list转set(重点)
Set<Long> likeSet = new HashSet<>(likeIds);

//将点赞状态set进返回体
postResponse.setLikeStatue(likeSet.contains(postResponse.getId()));
//第二种list转set的方法
Set<Long> likeSet = likeService.selectLikesByIds(ids).stream().map(o ->o.getTargetId()).collect(Collectors.toSet());

 set转list

//Set转化成List

//方法一
Set<String> set = new HashSet<String>();
set.add("mmmmmm");
set.add("nnnnnn");
set.add("ssssss");
List<String> list = new ArrayList<String>(set);

//方法二,使用迭代器
Set<String> set = new HashSet<String>();
set.add("aaaaa");
set.add("bbbbb");
set.add("ccccc");
List<String> list = new ArrayList<String>();
Iterator it=set.iterator();
while(it.hasNext())
{
    list.add(it.next());
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184114.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 想要复制网页的文字网页不让复制_如何复制文字

    想要复制网页的文字网页不让复制_如何复制文字作者:iamlaosong当我们需要复制网页上的内容时,往往会碰到不能复制的情况,面对这个问题,不同的情况有不同的应对方法,比如禁止JavaScript运行,查看源代码,另存为网页文件等。这些方法也可以用,现在有个更通用的办法是QQ屏幕截图所带的功能,不管网页用的什么技术,能看见就可以复制,特别适合不太懂技术的人。要用QQ截图功能,QQ肯定是要登录的,然后用浏览器打开需要复制文字的网页,按QQ屏幕截图快捷键Ctrl+Alt+A选择需要复制文字的区域,在弹出的菜单中点击“翻译”或者“屏幕识图”两个按钮

    2022年10月12日
    0
  • vue 时间戳转换成yyyy-MM-dd hh:mm[通俗易懂]

    vue 时间戳转换成yyyy-MM-dd hh:mm[通俗易懂]data的就是文件直接引入exportfunctionformatDate(date,fmt){if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1,(date.getFullYear()+”).substr(4-RegExp.$1.length));}leto={‘M…

    2022年10月20日
    0
  • android短信验证码代码,Android短信验证码自动填写实现代码

    android短信验证码代码,Android短信验证码自动填写实现代码今天给大家分享一个Android短信验证码自动填写的功能。先看下效果图,我发送了一条短信到手机,自动填写验证码。如图:这个小功能运用到了观察者模式,什么是观察者模式?观察者模式:定义对象间的一种一个(Subject)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新。在本例中,我们在短信中注册一个观察者,当短信功能(被观察者)收到信息时,就会…

    2022年7月25日
    7
  • restful接口定义_主板上的spi接口接什么

    restful接口定义_主板上的spi接口接什么由于在实际项目中碰到的restful服务,参数都以json为准。这里我获取的接口和传入的参数都是json字符串类型。发布restful服务可参照文章http://www.cnblogs.com/jav

    2022年8月6日
    2
  • java编译器——安装IDEA 步骤

    java编译器——安装IDEA 步骤1、从官网上下载ideaIU-2021.2.3,地址如下,点击download;IntelliJIDEA:TheCapable&ErgonomicJavaIDEbyJetBrainsACapableandErgonomicJavaIDEforEnterpriseJava,Scala,Kotlinandmuchmore…https://www.jetbrains.com/idea/图12、IntelliJIDEA是一款跨平台的开发工具,

    2022年7月15日
    43
  • java 封装

    java 封装1.封装简介概念将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的访问和操作。好处a.只能通过规定的方法访问数据。b.隐藏类的实例细节,方便修改和实现。为啥要对java的类进行封装?个人认为当做一个项目的时候里面的类很多,打个比方一个大公司部门很多,老板不是每个员工都认识,但是“各部门

    2022年7月8日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号