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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何查看linux系统内核版本_centos7内核版本

    如何查看linux系统内核版本_centos7内核版本1.查看Linux系统版本cat/etc/issue或者cat/etc/redhat-release示例:[root@localhostgrafana]#cat/etc/issueCentOSrelease6.5(Final)Kernel\ronan\m2.查看Linu

    2022年8月23日
    8
  • linux下修改文件内容[通俗易懂]

    linux下修改文件内容[通俗易懂]前言因为今天用了linux的复制文件功能以及修改文件内容的指令,所以刚好整理一下以备之后学习。复制文件到指定目录cp+文件名(可带路径)+目标路径(带路径)如:cpstart.sh/home/deploy/test/yirigong1就是将start.sh文件复制到指定的yirigong1目录下面。修改文件内容复制文件过去之后当然就是要修改文件的内容。catstart…

    2022年7月26日
    7
  • java保留两位小数4种方法「建议收藏」

    java保留两位小数4种方法「建议收藏」方法一:String的format方法(推荐)doublef=111231.5585;System.out.println(String.format(“%.2f”,f));方法二:DecimalFormat的format方法doublef=111231.5585;DecimalFormatdf=newDecimalFormat(“#.00”);System.out.println(df.format(f));以下内容了解即可,可以不用看方法三:BigDe

    2022年9月24日
    1
  • Java基础学习笔记总结

    Java基础学习笔记总结Java基础学习笔记一Java介绍Java基础学习笔记二Java基础语法之变量、数据类型Java基础学习笔记三Java基础语法之流程控制语句、循环Java基础学习笔记四Java基础语法之

    2022年8月4日
    8
  • 微信公众号推送的公众号图片尺寸_推文海报尺寸

    微信公众号推送的公众号图片尺寸_推文海报尺寸作者:trickyEdecay链接:https://www.zhihu.com/question/27138896/answer/127500504来源:知乎著作权归作者所有。商业转载请联系作者获得授

    2022年8月1日
    10
  • jupyter和python的关系_jupyter notebook和python

    jupyter和python的关系_jupyter notebook和python这个问题参见以下文章即可,讲的很全面。核心总结Python就是原生python;anaconda类似第三方集成,方便我们管理,而且自带很多库。如果选择安装Python的话,那么还需要pipinstall一个一个安装各种库,安装起来比较痛苦,还需要考虑兼容性;PyCharm就是一个IDE的角色,和NotePad没什么本质区别。只是大家习惯上,java配合MyEclipse使用,Anaconda…

    2022年8月27日
    11

发表回复

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

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