2013-11-26 41 views
0
public void land(Plane plane) { 
    Plane idC =(Plane) plane; 
    if(!Planes.contain(idC.getId())) { 
    id=id+1; 
    idC.setId(id); 
    Planes.add(idC); 
    } 
} 

平面具有一些字符串和连续字的结构,它包含一个id平面(字符串,字符串,int,int)。我试图找出我的数据库飞机是否包含飞机的编号。如果它什么都不做。如果没有,请添加飞机,同时给它一个新的ID。然而,我似乎有这样做的麻烦。我哪里错了?检查是否存在如果没有添加

+0

_some sort of trouble_你能有更具体一点吗? – Keppil

+0

首先让我们知道发生了什么问题。 – Buddha

+0

你的java代码在很多方面都是错误的。我们需要更多信息。例如,什么是“飞机”? ArrayList 或者ArrayList ? – Magus

回答

0

如果飞机是飞机的一个数组列表,然后简单地遍为对象,以检查它是否包含在数组列表.... 您可能需要声明你这样的数组列表:ArrayList<Plane> Planes = ..

0

虽然我不太肯定这背后你的逻辑,我假设你想是这样的:

public class Planes { 
    private Map<String, Plane> planes; 

    public Planes() { 
     this.planes = new HashMap<String, Plane>(); 
    } 

    public boolean contains(Plane plane) { 
     return this.planes.contains(plane.getId()); 
    } 

    public void add(Plane plane) { 
     this.planes.put(plane.getId(), plane); 
    } 
} 

public class SomePlaneRelatedClass { 
    private Planes planes; 

    public SomePlaneRelatedClass() { 
     this.planes = new Planes(); 
     ... 
    } 

    ... 

    public void land(Plane plane) { 
     if (!this.planes.contains(plane)) { 
      plane.setId(/* some generated ID */); 
      this.planes.add(plane); 
     } 
    } 
} 
} 

一个评论,虽然。如果你想要如果你的收藏包含飞机,不要使用列表。

想象一下当你有很多飞机时,你正在查询最后一个飞机。它会遍历整个列表以找到它(时间复杂度为O(n))。而是使用地图将您的UUID映射到您的平面并通过UUID获取,这应该会更快(O(1))。

相关问题