0

長さの異なる 2 つの char 配列があり、両方の配列の最初の数文字が同じかどうかを比較したいと考えています。例えば

char[] pngheader = new char[] { 137, 80, 78, 71 }; // PNG
char[] fileheader = new char[] { 137, 80, 78, 71 , xxx, xxx}; 

Arrays.equals() のようなエレガントな方法を使用してこれを行うことができるかどうか疑問に思っていますか?
前もって感謝します。

4

2 に答える 2

3

このArraysクラスは、状況に応じて役立つメソッドをいくつか提供します。

public static void main(String[] args) {
    char[] pngheader = new char[] { 137, 80, 78, 71 }; // PNG
    char[] fileheader = new char[] { 137, 80, 78, 71 , 1, 2}; 
    char[] fileheader2 = new char[] { 131, 80, 78, 71 , 1, 2}; 

    boolean equals = Arrays.equals(Arrays.copyOf(pngheader, 4),
                                        Arrays.copyOf(fileheader, 4));
    System.out.println(equals); //prints true

    boolean equals2 = Arrays.equals(Arrays.copyOf(pngheader, 4),
                                       Arrays.copyOf(fileheader2, 4));
    System.out.println(equals2); //prints false
}

メソッドを作成することで、これをより再利用可能にすることもできます。

    public static boolean arraysEquals(char[] arr1, char[] arr2, int length){
        return Arrays.equals(Arrays.copyOf(arr1, length -1), 
                        Arrays.copyOf(arr2, length -1));
    }

    //Usage

    arraysEquals(pngheader, fileheader, 4);
    arraysEquals(pngheader, fileheader2, 4);
于 2013-05-15T09:10:18.043 に答える
1

これはchar配列で機能します

    char[] pngheader = new char[] { 137, 80, 78, 71 }; // PNG
    char[] fileheader = new char[] { 137, 80, 78, 71 , 1, 1}; 
    boolean res = new String(fileheader).startsWith(new String(pngheader));
    System.out.println(res);
于 2013-05-15T09:14:01.933 に答える