有没有一种简单的方法来编写返回链表中包含的布尔元素的逻辑 AND 的方法?



我有一个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 的LinkedListcontains

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 及其包含方法。

问候

相关内容

  • 没有找到相关文章

最新更新