0

我正在开发一个 Java 程序,该程序正在制作一组颜色,这些颜色已在另一个数组中用于绘制图片。我在编写创建这个新数组的代码时磕磕绊绊,同时还排除了已经添加到这个数组中的颜色。

对于我的代码出错的地方,我将不胜感激。

谢谢。我的代码如下:

public ArrayList<Color> getColorList()
{
    ArrayList<Color> getColorList;
    getColorList = new ArrayList<Color>();
    int index = 0;
    boolean colorAdded = false;
    for(Stroke stroke : drawing){
        while(index <= getColorList.size() && colorAdded == false) {
        if(getColorList.get(index) == stroke.getColor()){
            colorAdded = true;
        }
        else{
            index = index + 1;
        }
    }
    if(colorAdded == false){
            getColorList.add(stroke.getColor());
        }
    index = 0;
    colorAdded = false;
    }
    return getColorList();
}
4

1 回答 1

1

将颜色存储在 Set 中,您无需担心重复:

Set<Color> distinctColors = new HashSet<Color>();
distinctColors .add(stroke.getColor());

return new ArrayList<Color>(distinctColors );

上面的代码将返回一个不同颜色的数组列表。

编辑[评论后]:

Color 类应该实现 hashcode 和 equals 方法,如果 2 个对象相等,则它们具有相同的 hashcode,如果 2 个对象具有相同的 hashcode,则它们可能相等,也可能不相等。

于 2013-03-31T16:54:18.773 回答