在java中从链表中删除所有假元素
我这里有一个鱼类数据的链接列表在java中从链表中删除所有假元素,java,linked-list,Java,Linked List,我这里有一个鱼类数据的链接列表 //create linked list of fish data called fl LinkedList<FishData> fl = new LinkedList<FishData>(); //Here are a few data items fl.add(new FishData("American Eel ", 9, "Summer/Spring ", 25 , false)); fl.add(
//create linked list of fish data called fl
LinkedList<FishData> fl = new LinkedList<FishData>();
//Here are a few data items
fl.add(new FishData("American Eel ", 9, "Summer/Spring ", 25 , false));
fl.add(new FishData("Hammerhead Shark ", 0, "All Year ", 36, false));
fl.add(new FishData("Horseshoe Crab ", 7, "All Year except May ", 60, false));
fl.add(new FishData("Haddock ", 18, "All Year ", 0, true));
fl.add(new FishData("Tautog ", 16, "late Spring to end of year ", 3, true));
更新:
所以我编辑了代码,现在有了这个
Iterator<FishData> itr = fl.iterator();
while (itr.hasNext()) {
FishData b = (FishData) itr.next();
if (!b.w) {
itr.remove();
}
}
for (FishData element : fl) {
System.out.println(element);
}
}
Iterator itr=fl.Iterator();
while(itr.hasNext()){
FishData b=(FishData)itr.next();
如果(!b.w){
itr.remove();
}
}
用于(数据元素:fl){
系统输出打印项次(元素);
}
}
以前我使用for循环打印整个列表,但现在使用它时,不会打印任何内容。next()将返回链接列表中的下一个元素,该元素将是FishData
对象。不能将其强制转换为布尔变量。相反,您希望访问fishData
对象的布尔变量。因此,假设您的FishData
类有一个someCondition
布尔变量,您可以执行以下操作:
while (itr.hasNext()) {
boolean w = itr.next().someCondition;
if (w = false)
itr.remove();
}
或者,如果它是一个private
变量,并且您有一个getter方法:
while (itr.hasNext()) {
boolean w = itr.next().isSomeCondition();
if (w = false)
itr.remove();
}
如果(w=false)
行也不正确<代码>=是赋值运算符。如果(w==false)或如果(!w),则需要执行。或者您可以将其简化为:
while (itr.hasNext()) {
if (!itr.next().isSomeCondition())
itr.remove();
}
此外,还需要创建更具体的迭代器
:
Iterator<FishData> itr = fl.iterator();
Iterator itr=fl.Iterator();
我想知道自己(在我面前没有IDE的情况下无法确认)itr.next()
是否会返回一个对象而不是FishData
,因为类型没有指定为迭代器
,实际上,OP还必须(1)将他的迭代器更精确地声明为迭代器
或(2)castitr.next()
intoFishData
type(示例:)。@Daedalus这是非常正确的。我在回答中加了这个。谢谢你指出这一点!由于返回值是一个布尔值
,因此getter方法可能会被称为isSomeCondition()
谢谢,我修改了它,但由于某些原因我无法打印新列表,我将现在的代码作为编辑发布到原始帖子中
Iterator<FishData> itr = fl.iterator();