java除去list中重复人的对象数据

除去list中重复的对象数据 两个for循环性能差 有什么好的方法吗

有帮助的话采纳一下
用stream流 方便简单
List list = assignReferenceList.stream().map(AssignReference::getUserId).distinct().collect(Collectors.toList());

可以用HashSet一次循环遍历

可以换种思考方式,利用空间换时间~ 在 Java 中,可以利用 HashSet 或 LinkedHashSet 数据结构来移除列表中重复的对象数据,一次for循环就可以了~
如果对你有帮助,麻烦点一下已采纳,谢谢。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7526437
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:java 判断list中某一列的数据的值是否等于一个值
  • 除此之外, 这篇博客: java删除list中一个元素中的 ① for循环遍历删除指定元素 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • public static void main(String[] args) {
            // 创建一个list
            List<String> list = new ArrayList<>(Arrays.asList("Lambda方式删除1", "Lambda方式删除2", "奸细", "Lambda方式删除4"));
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).equals("奸细")) {
                    list.remove(i);
                }
            }
        }
    

    或者这样

     public static void main(String[] args) {
            // 创建一个list
            List<String> list = new ArrayList<>(Arrays.asList("Lambda方式删除1", "Lambda方式删除2", "奸细", "Lambda方式删除4"));
            for (String s : list) {
                if ("奸细".equals(s)) {
                    list.remove(s);
                }
            }
      }
    

     public static void main(String[] args) {
            // 创建一个list
            List<String> list = new ArrayList<>(Arrays.asList("Lambda方式删除1", "Lambda方式删除2", "奸细", "Lambda方式删除4"));
            // 使用迭代器删除“奸细”
            ListIterator<String> iterator = list.listIterator();
            while (iterator.hasNext()) {
                if ("奸细".equals(iterator.next())) {
                    iterator.remove();
                }
            }
        }
    

    推荐使用

  • 您还可以看一下 王小科老师的零基础学Java编程—Java从小白到大咖课程中的 List接口的实现类小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    要在Java中去除列表中重复的对象数据,并且避免使用性能较差的双重循环,可以按照以下步骤进行操作:

    1. 创建一个HashSet对象,用于存储不重复的对象数据。
    Set<Object> set = new HashSet<>();
    
    1. 遍历列表中的每个对象,将其添加到HashSet中,由于HashSet不允许重复的元素,重复的对象将会被自动去重。
    List<Object> list = new ArrayList<>();
    
    // 遍历列表中的每个对象
    for (Object obj : list) {
        set.add(obj);
    }
    
    1. 将去重后的对象数据重新添加到一个新的列表中。
    List<Object> uniqueList = new ArrayList<>(set);
    

    完整的代码示例:

    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;
    
    public class Main {
        public static void main(String[] args) {
            List<Object> list = new ArrayList<>();
            // 添加对象数据到列表
    
            Set<Object> set = new HashSet<>();
            // 遍历列表中的每个对象
            for (Object obj : list) {
                set.add(obj);
            }
    
            List<Object> uniqueList = new ArrayList<>(set);
            // 去重后的对象数据
        }
    }
    

    请注意,以上代码只能判断对象的内容是否相等,如果你需要自定义对象的去重规则,可以重写对象的equals()和hashCode()方法,并在HashSet的构造方法中传入一个自定义的比较器。

    参考资料: