java - 如果第一个数组中的所有项目都出现在第二个数组中,则返回 true

标签 java arrays generics

我有一个通用方法

public static <T> boolean lessThanOrEqualTo(T[] arr1, T[] arr2) {

    for(int i = 0; i < arr1.length; i++) {
    T current = arr1[i];
    boolean[] track = new boolean[arr2.length];
    for(int j = 0; j < arr2.length; j++) {

        track[j] = current.equals(arr2[j]);

        if(j == arr2.length-1) {
            for(int k = 0; k < track.length; k++) {
                if(track[k] == true) {
                    System.out.println(Arrays.toString(track));
                    return true;
                }
            }
        }
    }
    System.out.println(Arrays.toString(track));
}
return false

}

如果arr1中的每个项目都在arr2内,我必须返回true。

示例:

lessThanOrEqualTo({ "Bill", "Mark", "Bill", "Mark", "Bill"}, 
 {"Bill", "Alex", "Mark"});

返回 true,因为 arr1 的每一项都在 arr2 中。

我该如何解决这个问题?

最佳答案

这是使用 Set 的解决方案

public static <T> boolean lessThanOrEqualTo(T[] arr1, T[] arr2) {
   Set<T> a = new HashSet<>(Arrays.asList(arr1));
   Set<T> b = new HashSet<>(Arrays.asList(arr2));
   a.removeAll(b);
   return a.isEmpty();
}

关于java - 如果第一个数组中的所有项目都出现在第二个数组中,则返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33899646/

相关文章:

java - Sametime 内的插件与 Lotus Notes Classess - 整个故事

java - 仅更改源版本和目标版本后要测试的内容

c - 分配给指针时从不兼容的指针类型警告中初始化

ios - 注册和出列特定类型的 UITableViewCell

c# - 在 C# 中,我可以根据使用的类型 (T) 使用泛型的特定实现吗

java - 返回通用列表

java - BufferedWriter 不写入所有信息

java - 我的 android 应用程序在我加载对话框时第二次崩溃

arrays - 希望将 EMV 数据解析为 TLV

c - 在 C99 中指向数组开始之前的元素