Java 将列表A中的元素添加到列表B中特殊成员相等的元素中
我想在Java中将一个列表中的对象添加到另一个列表中对象的成员。 要添加的对象具有标识其他列表中唯一元素的成员 有没有一个简单的方法 e、 g.在代表舰队的列表中,将每个水手添加到他的船上Java 将列表A中的元素添加到列表B中特殊成员相等的元素中,java,arraylist,Java,Arraylist,我想在Java中将一个列表中的对象添加到另一个列表中对象的成员。 要添加的对象具有标识其他列表中唯一元素的成员 有没有一个简单的方法 e、 g.在代表舰队的列表中,将每个水手添加到他的船上 class水手{ 整数ship_id; } 班轮{ 整数ship_id; 列出海员名单; } 列出海员名单; 列出车队名单; 在代表舰队的列表中,将每个水手添加到他的船上 不太清楚这意味着什么,但如果您正确地覆盖了equals和ahscode(一致、过渡、对称、重新验证)。然后,您可以使用检查对象是否在列表
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提供)以时间换取空间。根据您的上下文,您可以选择其中一种
使用地图存储参考的另一个缺点是,在添加新船舶时,您始终需要更新地图