当前位置: 首页 > 面试题库 >

Java中ArrayList的交集和并集

西门智
2023-03-14
问题内容

有什么方法可以这样做吗?我一直在寻找,但找不到任何东西。

另一个问题:我需要这些方法,以便可以过滤文件。有些是AND过滤器,有些是OR过滤器(类似于集合论),因此我需要根据所有文件以及保存这些文件的unite / intersects ArrayLists进行过滤。

我是否应该使用其他数据结构来保存文件?还有其他什么可以提供更好的运行时间吗?


问题答案:

这是不使用任何第三方库的简单实现。主要优势retainAll,removeAll并且addAll是这些方法不修改原来的列表输入方法。

public class Test {

    public static void main(String... args) throws Exception {

        List<String> list1 = new ArrayList<String>(Arrays.asList("A", "B", "C"));
        List<String> list2 = new ArrayList<String>(Arrays.asList("B", "C", "D", "E", "F"));

        System.out.println(new Test().intersection(list1, list2));
        System.out.println(new Test().union(list1, list2));
    }

    public <T> List<T> union(List<T> list1, List<T> list2) {
        Set<T> set = new HashSet<T>();

        set.addAll(list1);
        set.addAll(list2);

        return new ArrayList<T>(set);
    }

    public <T> List<T> intersection(List<T> list1, List<T> list2) {
        List<T> list = new ArrayList<T>();

        for (T t : list1) {
            if(list2.contains(t)) {
                list.add(t);
            }
        }

        return list;
    }
}


 类似资料:
  • 因此,我想在一个泛型类列表中交叉匹配数据,其中需要检查名称与姓氏的匹配,如果存在匹配,则返回数据或返回布尔值。这是我想到的 这返回TRUE,因为我使用GETTER AND SETTER通过设置布尔值从lambda表达式返回布尔值。 所以我在寻找最简单的lambda表达式来实现这一点?请问外面有人吗。

  • 一、概述 以数组实现。节约空间,但数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组,因此最好能给出数组大小的预估值。默认第一次插入元素时创建大小为10的数组。 按数组下标访问元素—get(i)/set(i,e) 的性能很高,这是数组的基本优势。 直接在数组末尾加入元素—add(e)的性能也高,但如果按下标插入、删除元素—add(i,e), remov

  • 我正在尝试使用多维列表中提供的索引来反向列表中的子列表。我没有太多使用多维列表/数组的经验。我不明白为什么这行不通。

  • 这是我的密码。我们不允许使用方法或数组,我们只是初学者。我的代码在

  • 考虑定义如下的 FooBar1 和 类型: 我的尝试/研究: 它们是双向相互分配的!(手动检查并使用检查 - 请参阅此处) 不过,它们彼此并不完全相同!(与检查 - 见这里) VSCode 的智能感知不会崩溃

  • 本文向大家介绍区分Java中的ArrayList和LinkedList,包括了区分Java中的ArrayList和LinkedList的使用技巧和注意事项,需要的朋友参考一下 一:ArrayList和LinkedList的大致区别如下: 1.ArrayList是实现了基于动态数组的数据结构,ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高 2.Li