Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Javafx列表<;数据<;数字,数字>&燃气轮机;removeAll没有';行不通_Java_List_Javafx_Arraylist_Removeall - Fatal编程技术网

Javafx列表<;数据<;数字,数字>&燃气轮机;removeAll没有';行不通

Javafx列表<;数据<;数字,数字>&燃气轮机;removeAll没有';行不通,java,list,javafx,arraylist,removeall,Java,List,Javafx,Arraylist,Removeall,我有这个: List<Data<Number, Number>> dataList = new ArrayList<XYChart.Data<Number,Number>>(); List<Data<Number, Number>> dataListSelected = new ArrayList<XYChart.Data<Number,Number>>(); 我得到了一个错误的答案。 下面是我的2

我有这个:

List<Data<Number, Number>> dataList = new ArrayList<XYChart.Data<Number,Number>>();
List<Data<Number, Number>> dataListSelected = new ArrayList<XYChart.Data<Number,Number>>();
我得到了一个错误的答案。 下面是我的2个列表的内容:

3:[数据[18.367963,-0.832832,null],数据[30.165189,-0.461874,null],数据[18.808959,-6.575699,null]]

3:[数据[18.367963,-0.832832,null],数据[30.165189,-0.461874,null],数据[18.808959,-6.575699,null]]

顺便说一句,我不知道为什么我有一个双,双,空。我不知道空值是从哪里来的。
为什么我的removeAll不工作?

我假定数据实际上是JavaFX.XYChart.Data,它有另一个对象节点,如所示。因此,这是空的。我不知道“toString”方法是否会打印节点对象的值,但看起来确实如此。

ArrayList(以及许多其他集合)使用contains()(使用equals()方法)确定是否在remove()/removeAll()方法中删除对象。如果检查以下情况:

dataList.get(0).equals(dataListSelected.get(0)) 
我猜这是错误的,因此removeAll也会失败。

1、ArrayList使用equals()来删除

if (o.equals(elementData[i]))
                return i;
但XYChart.Data并没有覆盖equals()方法,所以数据将使用Object的方法

public boolean equals(Object obj) {
    return (this == obj);
}
2、 数据有三个属性

X xValue, Y yValue, Object extraValue

double,double,null

是,它返回false。但是为什么呢?这两个对象应该是相同的值。这取决于对象XYChart.Data中equals()的实现,如果它们实现了它,则返回false。但是为什么呢?这是纯java,与fx无关:equals的默认实现是identity——请学习语言基础教程!fx是开源的——这意味着源代码是可读的:)因此,如果您不理解任何特定的输出,那么阅读toString的实现将有助于回答您的附加问题(在这种情况下,阅读java文档至少会给您一个关于空值可能来自何处的提示;)
public boolean equals(Object obj) {
    return (this == obj);
}
X xValue, Y yValue, Object extraValue