我需要通过时间表示一系列元素。出于设计目的,它们中的每一个都应该有一个颜色,以便一目了然地识别每一个颜色。重点在于,如果它们之间的颜色差异不被人类所感知,那么每个元素的颜色都是没有意义的。Java中颜色的哈希函数
元素唯一固定的属性是他们的ID。这个ID被认为是从一个元素到另一个元素的差异,但这不是确定的。
我所寻找的是一个哈希函数,它基于数字ID返回十六进制颜色(网络格式,例如#f62035),其很多与以前的ID和下一个ID。此外,因为显示元素的背景是黑色,所以HEX颜色不能太暗。
例子:
Element ID: 12
Element ID: 13
hash(12) = #f46600
hash(13) = #5aa9aa
您可能能够调整这个解决方案创建的列表:HTTP: //stackoverflow.com/questions/4246351/creating-random-colour-in-java – 2012-02-13 09:30:23
@JonLin这是我的最后一个选择,因为颜色不能保存到数据库,它应该是不同的执行中相同的颜色,但谢谢;) – eversor 2012-02-13 09:33:25
@eversor你可以通过在构造Random时使用已知的种子(比如12345L)来避免这样的问题。然后,如果您按照相同的顺序执行(完全)相同的操作,则会得到相同的结果。 – 2012-02-13 09:37:44