如何检查数组列表中的对象是否具有相同的值?

时间:2013-05-05 15:50:12

标签: java arraylist

我正在为Android平台做一个简单的游戏。我有25个对象,我称之为Circle。每个Circle对象都有一个字段color,其中包含一个代表

的int号
  1. for red
  2. for blue
  3. for white
  4. 代表黄色,最后
  5. 表示绿色。
  6. 所以每种颜色都有五个物体。

    每个对象也有一个我称之为status的布尔值,并且在开头设置为false。但是在游戏过程中,一些Circle对象status被设置为true。

    所有25个对象都存储在ArrayList中,我称之为listOfCircles

    我的问题是,如何检查设置为true的所有Circle对象是否具有相同类型的颜色代码?假设三个Circle对象设置为true,每个对象color为3,但也可能是这三个Circle对象的值可能为1而另外两个为4,那么它不是有效的比赛。

    一些帮助会很好!

7 个答案:

答案 0 :(得分:3)

要检查特定值是否存在多次,您可以使用以下内容:

if ( (Collections.frequency(portList, x)) > 1 ){
    System.out.println(x + " is in portList more than once ");
} 

答案 1 :(得分:2)

您可以使用类似的内容来查看特定值的次数:

System.out.println(Collections.frequency(portList, 1));

//可以有任何整数,我放1让你可以理解

答案 2 :(得分:1)

它的工作原理如下。它遍历圆圈列表并查找具有status = true的第一个圆圈。当它找到它时,它会在int color中保存该圆圈的颜色。在此后的每个步骤中,如果找到一个活动圈(使用status = true,它会检查该圈子的颜色是否与原始圈子的颜色匹配。

如果没有则表示并非所有活动圆都具有相同的颜色。由于flag最初设置为true,因此单个false足以确定并非所有活动圆都具有相同的颜色。

如果找不到false,则表示如果所有活动圆圈的颜色与第一个活动圆圈的颜色相同,则flag仍为true

List<Circle> listOfCircles = new ArrayList<Circle>();
boolean flag = true;
int color;
for (Circle currentCircle: listOfCircles) {
    if (currentCircle.status == true) {
        if (color == null) {
            color = currentCircle.color;
        } else {
            if (color != currentCircle.color) {
                flag = false;
            };
        };
    };
};
// flag now holds true or false according to your needs.

答案 3 :(得分:1)

如果arraylist的第一个元素的频率等于arraylist的大小,则所有项目都相等,否则不相等

    if ((Collections.frequency(list, list.get(0))) == list.size() ){

        System.out.println("string same");
    } 
    else{

        System.out.println("string different");

    }

答案 4 :(得分:0)

一个简单的for循环就足够了,因为你只检查一种颜色:

boolean isValid (ArrayList <Circle> circles) {
    int color = -1;
    for (Circle c : circles) {
        if (c.status) {
            if (color < 0)
                color = c.color;
            if (color != c.color)
                return false;
        }
    }
    return true;
}

答案 5 :(得分:0)

将isValid标志设置为true,将颜色标志设置为-1。然后遍历数组,如果一个对象设置为true,则将颜色设置为该数字(确保它只设置一次)然后进入另一个if语句。在第二个if语句中,如果颜色不匹配,则设置为false并且为false。

否则此循环将以true结束,这是一个有效的设置。

答案 6 :(得分:0)

public boolean mymeth(){

    int firstCol = 0; 
    for(int i = 0;listOfObject.length(); i++){
        // determine the color of the first element whose status is set
        if(listOfObject.get(i).status && firstCol == 0){ 
            firstCol = listOfObject.get(i).color; 
       }
       //if that value is not equal to next element who is set then return false; 
        else if(listOfObject.get(i).status && firstCol != 0){
            if(firstCol != listOfObject.get(i).color)
               return false;
        }
    }
    return true;
}