0

验证数组的内容是否只是相同值的重复的最有效方法是什么?

我正在从输入流中读取到数组中以进行查找:

keysz=new byte[sz];
            while((c=bis.read(keysz,pos,sz))>0){
            if(keysz contains all zeroes) break;
                    pos+=sz;
                    dec.write(hm.get(keysz.toString()));
            }

但是,如果数组在迭代中由全零('0000')组成,我需要突破。
请注意,数组的大小将是动态的。

4

3 回答 3

2

如果您知道应该重复的值,您可以这样做:

public boolean allRepetitions (Byte[] array, Byte value){
       return Collections.frequency(Arrays.asList(array), value) == array.length;
    }

否则,您可以使用 Set 检查是否所有元素都重复:

public boolean allRepetitions (Byte[] array){
       return new HashSet<Byte>(Arrays.asList(array)).size() == 1;
    }

您需要使用 Byte[] 而不是 byte[] 将其转换为 List

于 2013-08-21T15:39:55.480 回答
0
public bool IsAllZero(byte[] myArr)
{  
    while(int i=0; i<myArr.length; i++)
    {
        if(myArr[i] != 0)
            return false;
    }
    return true;
}
于 2013-08-21T15:34:00.753 回答
0
/* Check that all elements of arr equal val */
public static boolean allEqualTo(byte[] arr, byte val) {
  for (int i = 0; i < arr.length; ++i) {
    if (arr[i] != val) {
      return false;
    }
  }
  return true;
}

/* Check that all elements of arr have the same value */
public static boolean allSame(byte[] arr) {
  if (arr == null || arr.length == 0) {
    return true;
  }
  return allEqualTo(arr, arr[0]);
}
于 2013-08-21T15:44:42.007 回答