微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在for循环中检查自定义对象的值

如何解决在for循环中检查自定义对象的值

我有一个 A 类。

 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 举报,一经查实,本站将立刻删除。