У меня есть объект, который я искал, и указанный объект хранится в потоке. Я хотел бы дать пользователю возможность изменять элементы в существующем потоке и обновлять существующий список измененными элементами вместо того, чтобы создавать новый список в целом. Вопрос похож на этот 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;
}
}