栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

list与set互转 java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

list与set互转 java

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


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

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

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

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

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

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

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

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

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

//将点赞状态set进返回体
postResponse.setLikeStatue(likeSet.contains(postResponse.getId()));

 set转list

//Set转化成List

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711600.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号