怎么判断通一个数组中所有元素的值是否都一致

ousongbai 2020-04-12 10:00:54
		int[] pacgagecount = userService.setUsersCharge(cardnumber, pacgageid, httpSession);
for (int i : pacgagecount) {
for (int j : pacgagecount) {
if (pacgagecount[i] == pacgagecount[j]) {
return true;
}
}

}
return false;



我总感觉我写的这个for循环怪怪的。
debug的时候,感觉只判断了pacgagecount【0】==pacgagecount【0】然后就return true了
...全文
3320 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
timi先生 2020-05-29
  • 打赏
  • 举报
回复
pacgagecount【0】==pacgagecount【0】,这个比的是地址吧,用equals试试。
qybao 2020-05-29
  • 打赏
  • 举报
回复
修正一下,不用两重循环,一重循环就可以了,如9L的代码
qybao 2020-05-29
  • 打赏
  • 举报
回复
for(int i=0; i<a.length-1; i++) {
for (int j=i+1; j<a.length; j++) { //j从个i+1开始就可以了,因为i以前都比较过了
if (a[i] != a[j]) return false; //如果有一个不同就说明不一致
}
}
return true; //能走到这里就说明全一致

ITjavaman 2020-05-29
  • 打赏
  • 举报
回复

int a = pacgagecount[0];
for(int i : pacgagecount){
  if(i != a){
      return false;
  }
}
return true;
类似冒泡,直接遍历一遍一个一个比较,O(n) 不香么 另外7楼那个,int直接用==比较 8楼那个的时间复杂度也是O(n),而且每次分成两半还得比较两半第一个或者最后一个的值
qingyuan18 2020-05-29
  • 打赏
  • 举报
回复
全局排序开销是不是太大了? 二分法,数组分成两半,每一半比较第一个和最后一个,如果有差异就直接退出了,没有差异,再分裂成一半的一半,重复这个比较过程 时间复制度O(logN)
鱿鱼ing 2020-04-13
  • 打赏
  • 举报
回复
Stream.of(pacgagecount).distinct().count()>1
爱吃鱼的ねこ 2020-04-13
  • 打赏
  • 举报
回复
我错了,还是得2行
爱吃鱼的ねこ 2020-04-13
  • 打赏
  • 举报
回复
其实第一行也没起作用,就直接一行就行了
爱吃鱼的ねこ 2020-04-13
  • 打赏
  • 举报
回复
Arrays.sort(arr); return arr[0]==arr[arr.length-1]; 2行就搞定了,非那么麻烦干嘛
gaojun15173 2020-04-13
  • 打赏
  • 举报
回复
这个没必要弄双层循环啊
世代农民 2020-04-12
  • 打赏
  • 举报
回复
改成不等于,return false就可以了呀,只要有一个不相等false

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧