1

我想要实现的是这样的事情,假设我们有一个包含一千个盒子的列表和一个包含 25 种颜色的列表,现在我们想为盒子分配颜色,这样颜色就来自给定的列表,每次我问将选择相同颜色的颜色框。多个盒子可以使用相同的颜色,但是无论我执行多少次算法,同一个盒子的颜色总是相同的。

我想我可以有一个 25 种颜色的列表和一个算法来根据盒子的名称或 id 创建一个唯一的数字(在 25 范围内)。

谁能帮我什么算法适合我?

更新 要求略有变化,现在我需要该范围内的五种独特颜色,并且颜色必须始终相同。假设我们以五个一组的方式排列盒子,每个盒子应该在 25 种颜色范围内获得唯一的颜色。并且算法应该始终为同一组提供相同的颜色。

4

1 回答 1

4
box.getId().hashCode() % 25

会给你一个 0 到 24(含)之间的数字。

请注意,由于您没有为框之间的颜色分布指定任何规则,因此以下算法也可以满足您的要求:

return 0;

如果你想要一个良好的分布,然后遍历你的盒子,并填写一个Map<String, Integer>键是盒子 id 而值是颜色的地方:

Map<String, Integer> colorsByBoxId = new HashMap<String, Integer>();
int i = 0;
for (Box box : boxes) {
    int colorIndex = i % 25;
    i++;
    colorsByBoxId.put(box.getId(), colorIndex);
}

然后每次你想得到一个盒子的颜色时都使用这个贴图。

或者简单地做同样的事情,然后color在 Box 类中添加一个字段。

于 2012-12-14T07:49:24.170 回答