集册 Java实例教程 返回包含两个数组之间共享的元素的int[]

返回包含两个数组之间共享的元素的int[]

欢马劈雪     最近更新时间:2020-01-02 10:19:05

392
返回包含两个数组之间共享的元素的int[]

/* Copyright (c) 2001-2010, The HSQL Development Group

 * All rights reserved.

 *

 * Redistribution and use in source and binary forms, with or without

 * modification, are permitted provided that the following conditions are met:

 *

 * Redistributions of source code must retain the above copyright notice, this

 * list of conditions and the following disclaimer.

 *

 * Redistributions in binary form must reproduce the above copyright notice,

 * this list of conditions and the following disclaimer in the documentation

 * and/or other materials provided with the distribution.

 *

 * Neither the name of the HSQL Development Group nor the names of its

 * contributors may be used to endorse or promote products derived from this

 * software without specific prior written permission.

 *

 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

 * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,

 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,

 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;

 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND

 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS

 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 *///时 代 J a v a - nowjava.com 提 供

//package com.nowjava;


public class Main {

    public static void main(String[] argv) throws Exception {

        int[] arra = new int[] { 34, 35, 36, 37, 37, 37, 67, 68, 69 };

        int[] arrb = new int[] { 34, 35, 36, 37, 37, 37, 67, 68, 69 };

        System.out.println(java.util.Arrays.toString(commonElements(arra,

                arrb)));

    }


    /**

     * Returns an int[] containing elements shared between the two arrays

     * arra and arrb. The arrays contain sets (no value is repeated).

     *

     * Used to find the overlap between two arrays of column indexes.

     * Ordering of the result arrays will be the same as in array

     * a. The method assumes that each index is only listed

     * once in the two input arrays.

     * <p>

     * e.g.

     * </p>

     * <code>

     * <table width="90%" bgcolor="lightblue">

     * <tr><td colspane="3">The arrays</td></tr>

     * <tr><td>int []arra</td><td>=</td><td>{2,11,5,8}</td></tr>

     * <tr><td>int []arrb</td><td>=</td><td>{20,8,10,11,28,12}</td></tr>

     * <tr><td colspane="3">will result in:</td></tr>

     * <tr><td>int []arrc</td><td>=</td><td>{11,8}</td></tr>

     * </table>

     *

     * @param arra int[]; first column indexes

     * @param arrb int[]; second column indexes

     * @return int[] common indexes or <code>null</code> if there is no overlap.

     */

    public static int[] commonElements(int[] arra, int[] arrb) {


        int[] c = null;

        int n = countCommonElements(arra, arrb);
//来自 nowjava - 时  代  Java

        if (n > 0) {

            c = new int[n];


            int k = 0;


            for (int i = 0; i < arra.length; i++) {

                for (int j = 0; j < arrb.length; j++) {

                    if (arra[i] == arrb[j]) {

                        c[k++] = arra[i];

                    }

                }

            }

        }


        return c;

    }


    
展开阅读全文