【发布时间】:2020-07-09 23:47:08
【问题描述】:
我搜索了一个对象,并且该对象存储在流中。我想让用户能够修改现有流中的元素并使用修改后的元素更新现有列表,而不是完全创建一个新列表。问题与one 类似,只是用户将修改后的元素添加到新列表中
这是我目前所拥有的。我目前收到此错误
运算符'+'不能应用于'void'、'void'
如果您需要完整的代码,或包含其他类,请告诉我。
主类
else if (choice == 2){
System.out.println("\nEnter the name of the movie you would like to modify (Case Sensitive): ");
String search = scan.nextLine();
Optional<Item> item = items.stream()
.map(x->{
if(x.getItems()==null){
return Collections.singletonList(x);
}
x.getItems().getItem().add(x);
return x.getItems().getItem();
})
.flatMap(Collection::stream)
.filter(x -> x.getName().equals(search))
.peek(x-> x.setItems(null))//Peek exists mainly to support debugging
.findFirst();
System.out.println(item.toString());
System.out.println("\nEnter the new datatype of the movie (Number): ");
String userChoice = scan.nextLine();
System.out.println("\nEnter the new name of the movie: ");
String userChoice1 = scan.nextLine();
System.out.println("\nEnter the new data ID for the movie (Number): ");
int userChoice2 = scan.nextInt();
scan.nextLine();
System.out.println("\nEnter the new group for the movie: ");
String userChoice3 = scan.nextLine();
Collection::stream =
item.map(s -> s.setDataType(userChoice) + s.setName(userChoice1) + s.setData(userChoice2) + s.setGroup(userChoice3));
}
物品类
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
@XmlRootElement(name = "items")
public class Items {
private List<Item> item;
@XmlElement(name = "item")
public List<Item> getItem(){
return item;
}
public void setItem(List<Item> itemList){
this.item = itemList;
}
@Override
public String toString() {
return "\n" + item ;
}
}
物品类别
import javax.xml.bind.annotation.XmlElement;
public class Item {
private String dataType;
private String name;
private int data;
private String group;
private Items items;
@XmlElement
public String getDataType(){
return dataType;
}
public void setDataType(String dataType){
this.dataType = dataType;
}
@XmlElement
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
@XmlElement
public int getData(){
return data;
}
public void setData(int data){
this.data = data;
}
@XmlElement
public String getGroup(){
return group;
}
public void setGroup(String group){
this.group = group;
}
public Items getItems() {
return items;
}
public void setItems(Items items) {
this.items = items;
}
@Override
public String toString() {
return
"\n\tDataType: " + dataType +
"\n\tName: " + name +
"\n\tData: " + data +
"\n\tGroup: " + group +
"\n\tItems: " + items + "\n";
}
public String singleObject(){
return
"\n\tDataType: " + dataType +
"\n\tName: " + name +
"\n\tData: " + data +
"\n\tGroup: " + group;
}
}
【问题讨论】:
-
你能发布Item类吗?
-
@marc Item 和 Items class(Just incase) 已发布
-
为了您的信息,
Items类引用Item类和Item类引用Items类。这称为循环依赖,应该避免。 -
引用是为了处理解析另一个对象中的嵌套对象。在那种情况下仍然很糟糕吗?
标签: java