首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两组,以确定第一组是否是其他集合的子集

比较两组,以确定第一组是否是其他集合的子集
EN

Stack Overflow用户
提问于 2013-11-27 05:43:00
回答 3查看 1.2K关注 0票数 1

我正在制作一个android应用程序来选择一个基于规格的产品,并发送带有产品代码的sms。我有大量的不同规格的产品清单。我需要比较一下。23规格选择一种产品。我知道我可以使用多个if语句或嵌套的ifs,但我想知道是否有更好的方法来实现相同的功能。我只能选择产品,如果所有23个规格是完全相同的。所有规范都存储在变量中,如M1到M49,并根据产品代码进行映射。

SMS部分已经完成了,但我很困惑地比较这么多的变量。

任何指示都会受到高度赞赏。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-27 07:13:35

您可以使用JAVA的retainAll函数

代码语言:javascript
复制
class Check
{
static String s[] = { "q","w","e","r","t","y","u","i","o","p","a",
               "mmmmm","d","f","g","h","j","k","l","z","x","c","v" };

static String s1[] = {"b","n","m","er","re","ew","j","k","x","qq","ww","ee","c","v","t","y","d","f","g","h",
               "u","rr","yyy","uuu","ttt","trew","rerer","q","w","vv","gg","hh","tt","tr","ww","e","i"
               ,"eww","qwe","wer","o","p","a","s","ds","cv","r","l","z"};

public static void main(String arags[])
{
   Set<String> originalset = new HashSet<String>(Arrays.asList(s1));
   Set<String> testset = new HashSet<String>(Arrays.asList(s));        
   originalset.retainAll(testset);
    if(originalset.size()==23)
    {
        System.out.println("Sucess 23 matches found");
    }
    else
    {
          System.out.println("Fail 23 matches not found");
    }

}
}
票数 1
EN

Stack Overflow用户

发布于 2013-11-27 06:09:56

步骤:

代码语言:javascript
复制
1. Put both of them into a HashSet. A HashSet searches faster and doesn't allow duplicate elements.
2. Find if first hashset is a subset of second hashset.


import java.util.Iterator;


public class Sort {
    public static void main(String[] args) {
        String s[] = { "q","q","q","r","t","y","u","i","o","p","a",
                   "m","d","f","g","h","j","k","l","z","x","c","v" };

        String s1[] = {"b","n","m","q","q","er","re","ew","j","k","x","qq","ww","ee","c","v","t","y","d","f","g","h",
                   "u","rr","yyy","uuu","ttt","trew","rerer","q","w","vv","gg","hh","tt","tr","ww","e","i"
                   ,"eww","qwe","wer","o","p","a","s","ds","cv","r","l","z"};

       /* System.out.println("Length of s : " + s.length);
        System.out.println("Length of s1 : " + s1.length);
        Arrays.sort(s);
        Arrays.sort(s1);

        display(s);
        display(s1);
        int j=0;
        int count=0;
        for(int i=0;i<s1.length;i++) {
            if(s[j].equals(s1[i])) {

                count++;
                j++;
                if(j==23) break;
            }
        }
        if(j==23) System.out.println("23 matches found");
        else System.out.println("23 matches not found");
        */

        HashSet<String> hs1 = createSet(s);
        HashSet<String> hs2 = createSet(s1);
        System.out.println(h1SubsetOfh2(hs1, hs2));
    }

    public static HashSet<String> createSet(String[] sArr) {
        HashSet<String> hs = new HashSet<String>();
        for(int i=0;i<sArr.length;i++) {
            hs.add(sArr[i]);
        }
        return hs;
    }

    public static boolean h1SubsetOfh2(HashSet<String> hs1,HashSet<String> hs2) {
        Iterator<String> it = hs1.iterator();

        while(it.hasNext()) {
            if(!hs2.contains(it.next()))
                return false;
        }
        return true;
    }


}
票数 0
EN

Stack Overflow用户

发布于 2013-11-27 07:01:18

代码语言:javascript
复制
import java.util.Arrays;


public class Sort {
    public static void main(String[] args) {
        String s[] = { "q","w","e","r","t","y","u","i","o","p","a",
                   "mmmmm","d","f","g","h","j","k","l","z","x","c","v" };

    String s1[] = {"b","n","m","er","re","ew","j","k","x","qq","ww","ee","c","v","t","y","d","f","g","h",
                   "u","rr","yyy","uuu","ttt","trew","rerer","q","w","vv","gg","hh","tt","tr","ww","e","i"
                   ,"eww","qwe","wer","o","p","a","s","ds","cv","r","l","z"};

        System.out.println("Length of s : " + s.length);
        System.out.println("Length of s1 : " + s1.length);
        Arrays.sort(s);
        Arrays.sort(s1);

        display(s);
        display(s1);
        int j=0;
        int count=0;
        for(int i=0;i<s1.length;i++) {
            if(s[j].equals(s1[i])) {

                count++;
                j++;
                if(j==23) break;
            }
        }
        if(j==23) System.out.println("23 matches found");
        else System.out.println("23 matches not found");


    }
    public static void display(String a[]) {

        for(int i=0;i<a.length;i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println();
    }



}

试试这个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20234765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档