检查数组的值

时间:2013-08-21 15:31:58

标签: java arrays collections

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

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

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'),我需要突破。
请注意,数组的大小将是动态的。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

public bool IsAllZero(byte[] myArr)
{  
    while(int i=0; i<myArr.length; i++)
    {
        if(myArr[i] != 0)
            return false;
    }
    return true;
}

答案 2 :(得分: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]);
}