Java如何检查arraylist中的对象是否包含某个值

时间:2015-04-19 17:20:27

标签: java arraylist

您好,我有一个程序,您可以在其中放置瓷砖来建造房屋,然后卖掉房屋。如果建筑物的门至少有一扇窗户,我只想卖房子。 我的arraylist看起来像这样:

   public static ArrayList<block> b = new ArrayList<block>();

每种类型的瓷砖都有一个id。门瓦是1,窗瓦是2,墙砖是3。

for(int i = 0; i < play.b.toArray().length;i++){
    if(play.b.contains(play.b.get(i).id == 1)){
        cansell= true;
    }else{
        cansell= false;
    }

}

如何检查arraylist中的对象是否包含某个值,在本例中为值1。

这是门类:

public class door extends block{


    public cockpit(int x,int y,int rot){
        this.x = x;
        this.y = y;
        this.rotate = rot;
        r = new Rectangle(x - (int)play.camx,y - (int)play.camy,20,20);
        id = 3;
    }

    public void tick(){
        createCollisionRect();

        if(Comp.mr && r.contains(new Point((Comp.mx ) ,(Comp.my) ))){
            remove = true;

        }
        if(remove){
            //play.gui.money +=800;

        }

    }

    public void render(Graphics g){
        Graphics2D g2 = (Graphics2D) g;

        if (rotate == 0) {
            ImageIcon i62 = new ImageIcon("res/tiles/cockpit.png");
            img = i62.getImage();
            g.drawImage(img, x - (int) play.camx, y - (int) play.camy,20,20, null);
        }
        if (rotate == 1) {
            AffineTransform at = AffineTransform.getTranslateInstance(x, y);
            at.rotate(Math.toRadians(90),10,10);

            ImageIcon i62 = new ImageIcon("res/tiles/cockpit.png");
            img = i62.getImage();

            g2.drawImage(img,at, null);
        }
        if (rotate == 2) {
            AffineTransform at = AffineTransform.getTranslateInstance(x, y);
            at.rotate(Math.toRadians(180),10,10);

            ImageIcon i62 = new ImageIcon("res/tiles/cockpit.png");
            img = i62.getImage();

            g2.drawImage(img, at, null);
        }
        if (rotate == 3) {
            AffineTransform at = AffineTransform.getTranslateInstance(x, y);
            at.rotate(Math.toRadians(-90),10,10);

            ImageIcon i62 = new ImageIcon("res/tiles/cockpit.png");
            img = i62.getImage();

            g2.drawImage(img, at, null);

        }


    }
}

3 个答案:

答案 0 :(得分:1)

这似乎很直接。

注意不需要获取“id”...... ArrayList存储值本身。

您只需要检查数组中的索引位置值是否包含您要查找的值:

for(int i = 0; i < play.b.toArray().length;i++){
    String valueID = play.b.get(i);
    if(valueID.contains("1")){
        cansell= true;
    }else{
        cansell= false;
    }
}

这应该回答你的问题,如果没有,这确实有帮助:JArrayLists

希望这能回答你的问题。

让我知道结果

答案 1 :(得分:0)

if(play.b.contains(play.b.get(i).id == 1)){将评估为if(play.b.contains(true)){(或分别为false)。因此,由于int中有ArrayList,您应该更改以下代码:

cansell = play.b.contains(1);

而不是整个循环。

答案 2 :(得分:0)

根据评论中的更新:

public void canSell () {
       cansell = play.b.contains(1) && play.b.contains(2);
    }

来自:Oracle Java Docs on Lists