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


相关推荐

  • 阿里云Maven仓库完整版[通俗易懂]

    阿里云Maven仓库完整版[通俗易懂]阿里云Maven仓库完整版<?xmlversion=”1.0″encoding=”UTF-8″?><!–LicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements.SeetheNOTICEfiledistributedwiththisworkforadditionalinformationregardingcopy

    2025年7月11日
    4
  • docker(6)镜像的使用「建议收藏」

    docker(6)镜像的使用「建议收藏」前言Docker的三大核心概念:镜像、容器、仓库。初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似我们可以把镜像看作类,把容器看作类实例化后的对象。|

    2022年7月30日
    6
  • 浏览器安装为知笔记插件(chrome浏览器)

    浏览器安装为知笔记插件(chrome浏览器)1.下载并安装驱动 wiz.cn/zh-cn/downloads-webclipper.html2.我选择的谷歌浏览器,因为不好翻墙,这里选择手动安装3.下载会得到一个crx文件。注意这里按照官方文档去添加到扩展程序会失败。我们要把这个文件后缀名改为.zip形式并解压,得到文件夹。注意:是直接将.crx改成.zip!!不是自己压缩成的4.接着,打开谷歌的“更多工具”…

    2022年8月18日
    37
  • Python 技巧篇-pip卸载python库实例演示,查看pip命令大全方法[通俗易懂]

    Python 技巧篇-pip卸载python库实例演示,查看pip命令大全方法[通俗易懂]Python技巧篇-pip卸载python库实例演示,查看pip命令大全方法。因为安装的PyHook3没安装对吧,有点问题,就想着把它卸载掉,然后再重新安装一个,那应该怎么卸载呢?非常简单,就是pipuninstallxxx,正好和我们安装时的pipinstallxxx对应,下面还有一个确定操作,填y就是继续了,n就是取消了。python库卸载演示。cmd直接输入pip,回车就可以看到pip的命令大全了。

    2022年10月18日
    3
  • 使用cJSON解析JSON字符串

    使用cJSON解析JSON字符串使用cJSON解析JSON字符串一、为何选择cJSON;二、cJSON的核心结构体;三、解析JSON格式;1,下载源码;2,包含cJSON的源码;3,解析一个键值对;4,解析一个结构体; 5,解析结构体数组的JSON串;附带例程;

    2022年6月29日
    78
  • Android Studio 撤销(Ctrl+Z)的对应快捷键[通俗易懂]

    Android Studio 撤销(Ctrl+Z)的对应快捷键[通俗易懂]撤销(Ctrl+Z)前进一步(Ctrl+shift+z)vs中初始也是如此

    2022年8月27日
    5

发表回复

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

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