首页 / JAVA / java – 自动更新布尔值
java – 自动更新布尔值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 自动更新布尔值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1322字,纯文字阅读大概需要2分钟。
内容图文
![java – 自动更新布尔值](/upload/InfoBanner/zyjiaocheng/727/7bcc5df472fb42bcb73cd4fbb3b95688.jpg)
完整代码:
http://pastebin.com/UghV3xdT
我有两个几乎相同的方法,只能用一个if语句来区分:if(k%3!= 1)和if(k%2 == 0).
int k = 0;
while(k<50){
if(k % 3 != 1){ // OR if(k % 2 == 0)
// Code logic goes here
k++;
}
}
每种情况的使用由阵列的长度决定,这意味着特定情况只需要确定一次. ‘k’表示另一个数组的索引,50表示此Array的长度.
我可以编写类似if(foo> 1?k%3!= 1:k%2 == 0)的东西,但这需要程序在每次循环运行时执行操作.
在某种程度上,我想要一种更新布尔值.有没有办法做到这一点,或者这是传值的缺点?我应该保留两种单独的方法,还是使用三元运算符?
本质上,我正在寻找一个包含表达式而不是值的类型.
解决方法:
在Java 8中,有一个很好的功能接口叫做IntPredicate.如果将它与lambda表达式结合使用,则可以实现无需重复,额外代码或任何减速的目标:
public final class Example {
public static void main(String[] args) {
//Instead of randomly choosing the predicate, use your condition here
Random random = new Random();
IntPredicate intPredicate = random.nextBoolean() ? i -> i % 2 == 0 : i -> i % 3 != 1;
int k = 0;
while(k<50){
/*
*At this point the predicate is either k%2==0 or k%3!=1,
* depending on which lambda you assigned earlier.
*/
if(intPredicate.test(k)){
// Code logic goes here
k++;
}
}
}
}
PS:请注意,我使用随机布尔值在谓词之间切换,但您可以使用任何条件
内容总结
以上是互联网集市为您收集整理的java – 自动更新布尔值全部内容,希望文章能够帮你解决java – 自动更新布尔值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。