Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中从链表中删除所有假元素_Java_Linked List - Fatal编程技术网

在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)cast
itr.next()
into
FishData
type(示例:)。@Daedalus这是非常正确的。我在回答中加了这个。谢谢你指出这一点!由于返回值是一个
布尔值
,因此getter方法可能会被称为
isSomeCondition()
谢谢,我修改了它,但由于某些原因我无法打印新列表,我将现在的代码作为编辑发布到原始帖子中
Iterator<FishData> itr = fl.iterator();