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
Java 从列表中删除值<;对象>;这是地图的一部分<;字符串,列表<;对象>&燃气轮机;_Java_List_Arraylist_Java 8_Hashmap - Fatal编程技术网

Java 从列表中删除值<;对象>;这是地图的一部分<;字符串,列表<;对象>&燃气轮机;

Java 从列表中删除值<;对象>;这是地图的一部分<;字符串,列表<;对象>&燃气轮机;,java,list,arraylist,java-8,hashmap,Java,List,Arraylist,Java 8,Hashmap,我有一个List coordinateList=new ArrayList()

我有一个
List coordinateList=new ArrayList()X
Y
名称
关联的对象(
坐标

例如

我试图实现的是创建一个包含所有按名称分组的
坐标的地图。这是通过以下Java 8操作完成的:

Map<String, List<Coordinates>> newList = coordinateList.stream()
           .collect(Collectors.groupingBy(Coordinates::getName));
有没有办法将
名称
映射所包含的
列表
中删除?我可以通过与对象
坐标关联的
toString
方法删除它,但我需要它来进行分组

我想要实现的示例:

Series1=[Coordinates [X=0.1, Y=0.1], Coordinates [X=0.1, Y=0.2]

etc

由于分组是使用
坐标::getName
进行的,因此
name
属性在
toString()
方法中是不需要的(按照惯例,您可以删除它),然后您将获得所需的输出

@Override
public String toString() {
    return "Coordinates [X=" + x + ", Y=" + y + "]";
}

根据您的代码,您正在使用Coordinates.getName()方法进行分组。在此实现中,不调用坐标的toString()方法

Map<String, List<Coordinates>> newList = coordinateList.stream()
       .collect(Collectors.groupingBy(Coordinates::getName));

您还需要一个类来表示不带序列的坐标。为什么要关心字符串表示法?只是不要调用
toString
。创建另一个方法,以您需要的方式格式化结果。如果我创建了一个没有名称的类,那么名称是否仍将与值链接,以便我可以将它们组合在一起?好吧,可以跳过
坐标
类的
方法中的
名称
信息,但这感觉不对(如果您在打印
坐标
实例时需要在其他位置使用该
名称
信息怎么办?)您可以创建单独的方法来构建字符串(或动态打印每个部分)以您想要的形式,通过在每个地图条目和列表元素上循环。或者,如果此地图的唯一目的是显示,则可以使用collection
List
,而不是collection
List
(其中每个字符串仅包含x,y信息)?
@Override
public String toString() {
    return "Coordinates [X=" + x + ", Y=" + y + "]";
}
Map<String, List<Coordinates>> newList = coordinateList.stream()
       .collect(Collectors.groupingBy(Coordinates::getName));
public String toString() {
    return "Coordinates: [X=" + X + " ,Y=" + Y + "]";
}