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
。创建另一个方法,以您需要的方式格式化结果。如果我创建了一个没有名称的类,那么名称是否仍将与值链接,以便我可以将它们组合在一起?好吧,可以跳过坐标类的方法中的名称信息,但这感觉不对(如果您在打印坐标实例时需要在其他位置使用该名称信息怎么办?)您可以创建单独的方法来构建字符串(或动态打印每个部分)以您想要的形式,通过在每个地图条目和列表元素上循环。或者,如果此地图的唯一目的是显示,则可以使用collectionList
,而不是collectionList
(其中每个字符串仅包含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 + "]";
}