Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.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 将列表A中的元素添加到列表B中特殊成员相等的元素中_Java_Arraylist - Fatal编程技术网

Java 将列表A中的元素添加到列表B中特殊成员相等的元素中

Java 将列表A中的元素添加到列表B中特殊成员相等的元素中,java,arraylist,Java,Arraylist,我想在Java中将一个列表中的对象添加到另一个列表中对象的成员。 要添加的对象具有标识其他列表中唯一元素的成员 有没有一个简单的方法 e、 g.在代表舰队的列表中,将每个水手添加到他的船上 class水手{ 整数ship_id; } 班轮{ 整数ship_id; 列出海员名单; } 列出海员名单; 列出车队名单; 在代表舰队的列表中,将每个水手添加到他的船上 不太清楚这意味着什么,但如果您正确地覆盖了equals和ahscode(一致、过渡、对称、重新验证)。然后,您可以使用检查对象是否在列表

我想在Java中将一个列表中的对象添加到另一个列表中对象的成员。 要添加的对象具有标识其他列表中唯一元素的成员

有没有一个简单的方法

e、 g.在代表舰队的列表中,将每个水手添加到他的船上

class水手{
整数ship_id;
}
班轮{
整数ship_id;
列出海员名单;
}
列出海员名单;
列出车队名单;
在代表舰队的列表中,将每个水手添加到他的船上

不太清楚这意味着什么,但如果您正确地覆盖了equals和ahscode(一致、过渡、对称、重新验证)。然后,您可以使用检查对象是否在列表中

在代表舰队的列表中,将每个水手添加到他的船上


不太清楚这意味着什么,但如果您正确地覆盖了equals和ahscode(一致、过渡、对称、重新验证)。然后,您可以使用来检查对象是否在列表中。

最简单的方法是创建一个从Id到实际发货的关联

例如,您可以在代码的某个地方有一个
映射
(这取决于结构,甚至可以作为
Ship
的静态成员)

Map<Integer, Ship> shipMap = ....;

for(Sailor sailor: sailors) {
    shipMap.get(sailor.shipId()).addSailor(sailor);    
}
拥有这张
地图
,只需迭代你的
水手
,并将其添加到相应的
船上

Map<Integer, Ship> shipMap = ....;

for(Sailor sailor: sailors) {
    shipMap.get(sailor.shipId()).addSailor(sailor);    
}
Map shipMap=。。。。;
用于(水手:水手){
shipMap.get(sealer.shipId()).addsealer(sealer);
}

最简单的方法是创建一个从Id到实际
Ship
对象的关联

例如,您可以在代码的某个地方有一个
映射
(这取决于结构,甚至可以作为
Ship
的静态成员)

Map<Integer, Ship> shipMap = ....;

for(Sailor sailor: sailors) {
    shipMap.get(sailor.shipId()).addSailor(sailor);    
}
拥有这张
地图
,只需迭代你的
水手
,并将其添加到相应的
船上

Map<Integer, Ship> shipMap = ....;

for(Sailor sailor: sailors) {
    shipMap.get(sailor.shipId()).addSailor(sailor);    
}
Map shipMap=。。。。;
用于(水手:水手){
shipMap.get(sealer.shipId()).addsealer(sealer);
}

据我所知,您需要以下内容:

//Add every sailor to his ship in a list representing the fleet.
    public void addSailorToFleet(){
        for(Sailor sailor : sailors){
            for(Ship ship : fleet){
                if(sailor.ship_id == ship.ship_id){
                    ship.sailors.add(sailor);
                }
            }
        }
    }
这具有O(n^2)复杂性

另一种使用映射存储引用的解决方案(由pcalcao提供)以时间换取空间。根据您的上下文,您可以选择其中一种


使用地图存储参考的另一个缺点是,在添加新船舶时,您始终需要更新地图。

据我所知,您需要以下内容:

//Add every sailor to his ship in a list representing the fleet.
    public void addSailorToFleet(){
        for(Sailor sailor : sailors){
            for(Ship ship : fleet){
                if(sailor.ship_id == ship.ship_id){
                    ship.sailors.add(sailor);
                }
            }
        }
    }
这具有O(n^2)复杂性

另一种使用映射存储引用的解决方案(由pcalcao提供)以时间换取空间。根据您的上下文,您可以选择其中一种

使用地图存储参考的另一个缺点是,在添加新船舶时,您始终需要更新地图