java - 如何从列表中删除重复元素?
问题描述
列表列表 = ["f1,f2","f2,f3","f4,f5","f2,f1","f5,f4"];
输出列表将是 List uniqueList = ["f1,f2","f2,f3","f4,f5"]
解决方案
使用附加类:
static class Pair {
String a, b;
Pair(String s) {
String[] arr = s.split(",");
this.a = arr[0];
this.b = arr[1];
}
static String pairToString(Pair p) {
return p.a + "," + p.b;
}
@Override
public int hashCode() {
return Objects.hash(a, b) + Objects.hash(b, a);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Pair p = (Pair) o;
return (p.a.equals(a) && p.b.equals(b)) || (p.b.equals(a) && p.a.equals(b));
}
}
现在您可以使用:
public static void main(String[] args) {
List<String> list = Arrays.asList("f1,f2", "f2,f3", "f4,f5", "f2,f1", "f5,f4");
List<String> strings = list
.stream()
.map(Pair::new)
.distinct()
.map(Pair::pairToString)
.collect(Collectors.toList());
}
推荐阅读
- firebase - 403 调用者没有 Firebase 管理 API addFirebase 的权限
- java - 快速变量插入字符串
- php - 将当前月份值与数组中前 5 个月的值相加
- elasticsearch - 通过 url 设置 Kibana 仪表板过滤器
- django-rest-framework - 无法使用邮递员连接到 127.0.0.1.:8000 django 服务器
- node.js - 非常慢的 ng build --prod 在 Docker
- opencv - 在对象检测中,是否有一个功能可以帮助我在通过数字检测后测量对象大小 Detectnet
- c++ - 使用 Mingw64 编译的 NetCDF C++ 4.3.0 接口库的 Visual Studio 2017 未解决的符号链接错误
- python - 为 wsgi 提供正确的 python 包路径名
- python - 如何在 OpenCV 3.0 或更高版本中使用estimateRigidTransform,还有其他选择吗?