集册 Java实例教程 如果从位置开始的数组a按顺序包含数组b的所有元素,则返回true。

如果从位置开始的数组a按顺序包含数组b的所有元素,则返回true。

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

493
提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
如果从位置开始的数组a按顺序包含数组b的所有元素,则返回true。

/* 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.

 */

//package com.nowjava;
/**来自 
 时代Java公众号 - N o w J a  v a . c o m**/


public class Main {

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

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

        int start = 2;

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

        System.out.println(containsAt(arra, start, arrb));

    }


    /**

     * Returns true if arra from position start contains all elements of arrb

     * in sequential order.

     */

    public static boolean containsAt(byte[] arra, int start, byte[] arrb) {

        return countSameElements(arra, start, arrb) == arrb.length;

    }


    /**

     * Returns true if arra from position start contains all elements of arrb

     * in sequential order.

     */

    public static boolean containsAt(char[] arra, int start, char[] arrb) {

        return countSameElements(arra, start, arrb) == arrb.length;/** 来自 n o w j a   v  a . c o m - 时  代  Java**/

    }


    /**

     * Returns the count of elements in arra from position start that are

     * sequentially equal to the elements of arrb.

     */

    public static int countSameElements(byte[] arra, int start, byte[] arrb) {


        int k = 0;

        int limit = arra.length - start;


        if (limit > arrb.length) {

            limit = arrb.length;

        }


        for (int i = 0; i < limit; i++) {

            if (arra[i + start] == arrb[i]) {

                k++;

            } else {

                break;

            }

        }


        return k;

    }


    /**

     * Returns the count of elements in arra from position start that are

     * sequentially equal to the elements of arrb.

     */

    
展开阅读全文