java - 如何从类对象列表中提取值,删除重复项并按字母顺序排序?
问题描述
我在java中有一个类标签
public class Tag {
private int excerptID;
private String description;
}
我正在从 Tag 对象rawTags列表中提取描述到一个集合(我需要删除重复值):
Set<String> tags = rawTags.stream().map(Tag::getDescription).collect(Collectors.toSet());
但我也想让结果集(或唯一描述列表)按字母顺序排列。有没有办法直接将 TreeSet 与 Collectors 一起使用,或者如何提取、删除重复项和按字母顺序排序的最简单方法是什么?
解决方案
public static void main(String[] args) {
Tag tag1 = new Tag(1,"9a");
Tag tag2 = new Tag(2,"32");
Tag tag3 = new Tag(3,"4c");
Tag tag4 = new Tag(4,"1d");
List<Tag> rawTags = new ArrayList<>();
rawTags.add(tag1);rawTags.add(tag2);rawTags.add(tag3);rawTags.add(tag4);
Set<String> tags = rawTags.stream().map(Tag::getDescription).collect(Collectors.toCollection(TreeSet::new));
System.out.print(tags);
}
推荐阅读
- ios - 连接 VPN IKEv2 它可以在 iOS 平台上工作,但 macOS 无法工作,面临同样的问题
- python-3.x - 同一画布上的多个图形
- mysql - 从条件相同的表中获取列名
- android - 为容器中的两个孩子绘制阴影,它们之间没有空间
- python - 在不调用 super() 的情况下执行父类方法
- azure - 使用类似于 zipkin 的 Azure 日志分析跟踪 REST 跟踪时间的可能性
- django - 如何将多个对象作为上下文传递给 django 中基于类的通用视图中的模板?
- reactjs - 如何使用 React Native 显示 ASP.NET Core 返回的非公共图像?
- javascript - 文本甚至没有使用 typed.js 输入
- java - 我想要一个方法中有两个数组列表