0

整数を使用してJavaでarray_intersectのような関数を作成したこのスニペットをオンラインで見つけました。

サンプル:

        int[] intersect(int[] arr1, int[] arr2) {
            int count = 0;
            for(int a = 0; a < arr1.length; a++) {
                for(int b = 0; b < arr2.length; b++) {
                    if(arr1[a] == arr2[b]) {
                        count++;
                        break;
                    }
                }
            }

            int[] result = new int[count];
            count = 0;
            for(int a = 0; a < arr1.length; a++) {
                for(int b = 0; b < arr2.length; b++) {
                    if(arr1[a] == arr2[b]) {
                        result[count++] = arr1[a];
                        break;
                    }
                }
            }

            return result;
        }

        int[] arr1 = new int[] {10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
         95, 85, 75, 65, 55, 45, 35, 25, 15, 05,
         10, 15, 20, 25, 30, 35, 40, 45, 50, 55};

        int[] arr2 = new int[] {15, 25, 35, 45, 55,
         12, 22, 32, 43, 52,
         15, 25, 35, 45, 55};

        int[] p1 = this.unique(arr1);
        int[] p2 = this.unique(arr2);
        int[] intersectResults = this.intersect(arr1, arr2);

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

しかし、私がそれを次のように変更したとき:

        String[] intersect(String[] a_yourname, String[] a_crushname) {
            int count = 0;
            for(int a = 0; a < a_yourname.length; a++) {
                for(int b = 0; b < a_crushname.length; b++) {
                    if(a_yourname[a] == a_crushname[b]) {
                        count++;
                        break;
                    }
                }
            }

            String[] result = new String[count];
            count = 0;
            for(int a = 0; a < a_yourname.length; a++) {
                for(int b = 0; b < a_crushname.length; b++) {
                    if(a_yourname[a] == a_crushname[b]) {
                        result[count++] = a_yourname[a];
                        break;
                    }
                }
            }

            return result;
        }

     String[] flames = this.intersect(a_yourname, a_crushname);
            //String[] p23 = this.unique(arr2);
             System.out.println("heheh" +flames.length);
             for(int a = 0; a < flames.length; a++) {
                System.out.print(flames[a] + "    ");
            }

誰かが私がここで間違ったことを説明できますか? 私は本当にJavaに精通していません。

a_yournamea_crushnameはどちらも文字列配列です。

4

1 に答える 1

1

コード:

    String[] a = new String[] { "aa", "bb", "cc" };
    String[] b = new String[] { "bb", "cc", "dd" };

    Set<String> setA = new HashSet<String>(Arrays.asList(a));
    List<String> listB = Arrays.asList(b);
    setA.retainAll(listB);
    System.out.println(setA);

ここで結果を見ることができます: http://ideone.com/tKg5xa

結果を配列として本当に欲しい場合:

String[] out = setA.toArray(new String[setA.size()]);

繰り返しますが、結果を繰り返し処理するだけであれば、配列を使用する必要はありません。Google で「Java for each」を検索するか、Java の本を手に取ってください。

于 2013-01-26T11:32:59.760 に答える