首页 > 解决方案 > 在 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
   }
}

我需要帮助来编写逻辑。

标签: javafor-loopforeachiterator

解决方案


逻辑可以改变,但行为相同。
基本上,需要一个列表来存储所有对象和一个自定义方法来检索特定对象。

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
168423058,flag=false
1247233941,flag=true

推荐阅读