Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.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
在Java中获取和修改集合中的对象_Java_List_Set - Fatal编程技术网

在Java中获取和修改集合中的对象

在Java中获取和修改集合中的对象,java,list,set,Java,List,Set,我有一个由以下元素组成的MyFinalSalad类: AppleClass apple; BananaClass banana; PearClass pear; List<SpicesClass> spices; 总而言之,如果mySalad已经存在于mySet中,请将spice对象添加到mySalad中spices的spices列表中的mySalad中,否则在创建新的spice列表后将mySalad添加到mySet,向其添加肉桂,并在mySalad中插入列表 我的问题是,如果se

我有一个由以下元素组成的
MyFinalSalad
类:

AppleClass apple;
BananaClass banana;
PearClass pear;
List<SpicesClass> spices;
总而言之,如果
mySalad
已经存在于
mySet
中,请将
spice
对象添加到
mySalad
spices
spices
列表中的
mySalad
中,否则在创建新的spice
列表后将
mySalad
添加到
mySet
,向其添加
肉桂
,并在
mySalad
中插入列表

我的问题是,如果set已经有了
mySalad
,我想在该对象的列表中添加一个新的香料,我该如何实现它

我从中得到以下信息:

mySet.stream().filter(mySalad::equals).findAny().orElse(null).getSpices().add(cinnamon);
这是唯一的方法还是正确的方法?还是有更好的办法

我在想,由于我已经在执行
包含
检查后输入
如果
,将永远不会遇到
orElse(null)
。因此,
null.getSpices()
将永远不会出现。这个假设正确吗

有更好的方法吗


我无法将
Set
更改为
Map

您的假设是正确的。
orElse(null)
将永远不会发生,因为您要检查集合
之前是否包含沙拉。您可以将其替换为
get()

但是,我也会在前面进行一个级别的操作,并将其作为可选操作处理,利用
isPresent
get
方法

Salad mySalad = new Salad();
Optional<Salad> possibleSalad = set.stream().filter(mySalad::equals).findAny();
if (possibleSalad.isPresent()) {
    Salad alreadyExistingSalad = possibleSalad.get();
    // combine spices
} else {
    // add new salad
}
Salad mySalad=new Salad();
可选的possibleSalad=set.stream().filter(mySalad::equals).findAny();
if(可能是laad.isPresent()){
沙拉已存在沙拉=possiblesaad.get();
//混合香料
}否则{
//添加新沙拉
}

如同一个线程中所述,如果您的线程是NavigableSet,则只需通过
Foo bar=set.floor(Foo)检索即可然后执行操作
Salad mySalad = new Salad();
Optional<Salad> possibleSalad = set.stream().filter(mySalad::equals).findAny();
if (possibleSalad.isPresent()) {
    Salad alreadyExistingSalad = possibleSalad.get();
    // combine spices
} else {
    // add new salad
}