我有一个n个布尔元素的链接列表,我应该编写一个返回这些元素的逻辑AND的方法。
public class Element{
boolean bool;
Element next;
public Element(boolean bool, Element next){
this.bool=bool;
this.next=next;
}
}
public class List{
Random rand= new Random();
Element e=null;
public List(int n){
for(int i=0; i<n; i++){
e= new Element(rand.nextBoolean(),e);
}
}
我想创建一个数组,遍历列表,用逻辑 AND 值填充数组,然后返回数组。 老实说,由于各种原因,我认为这不是一个好的解决方案。 我可以在没有数组的情况下做到这一点吗?
只需使用 Java 的LinkedList
和contains
:
LinkedList<Boolean> myList = new LinkedList<>();
// add a bunch of true's
myList.add(true);
myList.add(true);
myList.add(true);
myList.add(true);
System.out.println("logicalAND="+!myList.contains(false));
// add a false
myList.add(false);
System.out.println("logicalAND="+!myList.contains(false));
指纹
logicalAND=true
logicalAND=false
如果列表元素更复杂,但仍需要解析布尔值的相等性,请确保更新其equals
方法。
如果我误解了这里的问题,请原谅我,但是如果你试图得到布尔值和整个块,如果一切都是真的,那不是真的吗,否则是假的吗?
这是我的想法的一些模糊代码
boolean value=true;
for(int i=0;i<n;i++){ //traverse the nodes
if( /*Value at the node you're at*/==false )
value=false;
}
return value;
您可以使用递归并在 Element 类中编写一个方法,如下所示:
boolean andAll() {
return (next!=null) ? bool && next.andAll() : bool;
}
如果 bool 为 false,Java 将不会计算该表达式左侧的部分。 可以在列表类中编写接口方法,以在第一个列表元素上调用该方法。
如果你的目标不是创建链表的新实现,你应该使用 Java 提供的 LinkedList 及其包含方法。
问候