如何解决在for循环中检查自定义对象的值
static class A {
/** true if any null value is seen in the input,null values are to be ignored */
boolean isNull = false;
}
我启动了多个 A 类对象,然后尝试对其进行迭代以了解是否所有对象在 for 循环中都具有 isNull=true。
public A mergeAs(Iterable<A> Aobjects) {
for (A a : Aobjects) {
//check if all a.isNull=true
}
}
我需要帮助编写逻辑。
解决方法
逻辑可以改变,但行为相同。
基本上,需要一个列表来存储所有对象,并需要一个自定义方法来检索特定对象。
import java.util.ArrayList;
import java.util.List;
public class CheckObj {
public static void main(String[] args)
{
MyList lst = new CheckObj().new MyList();
lst.add(new CheckObj().new A(true));
lst.add(new CheckObj().new A(false));
lst.add(new CheckObj().new A(false));
lst.add(new CheckObj().new A(true));
lst.getNotNull().forEach(System.out::println);
lst.forEach(System.out::println);;
}
class A{
boolean isNull = false;
A(boolean flag)
{
isNull = flag;
}
public String toString()
{
return this.hashCode()+",flag="+isNull;
}
}
class MyList extends ArrayList<A>
{
private static final long serialVersionUID = 1L;
public List<A> getNotNull()
{
List<A> list = new ArrayList<A>();
for(A obj:this)
{
if(obj.isNull == false)
{
list.add(obj);
}
}
return list;
}
}
}
输出:
specific objects
713338599,flag=false
168423058,flag=false
all objects
1160460865,flag=true
713338599,flag=false
1247233941,flag=true
,
假设类 A
具有适当的 getter 和构造函数,并带有参数来设置 isNull
字段:
static class A {
/** true if any null value is seen in the input,null values are to be ignored */
boolean isNull = false;
public A(boolean isNull) {
this.isNull = isNull;
}
public boolean isNull() {
return this.isNull;
}
}
方法mergeAs
可以实现为:
public A mergeAs(Iterable<A> Aobjects) {
return new A(
StreamSupport.stream(Aobjects.spliterator(),false).allMatch(A::isNull)
);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。