求给具有不同地理位置信息代码的人赋颜色值的算法
有n个人,有手机号码,地理位置信息,颜色代码等属性
假设第一个人地理颜色代码是#000000
给后面的n个人赋颜色值
第n个人与前面的n-1个人作比较
如果与前面n-1中的某个人(假设i)地理位置代码相同则第n个人的颜色代码赋值为第i个人的颜色代码,跳出,继续比较第n+1个人
如果与前面n-1个人中的每个人的地理位置代码都不同,则赋新的颜色值。
请教java算法,谢谢
下面是我写的,运行结果不对
public List setColorList(List list){
List clist = new ArrayList();
ColorLib lib = new ColorLib();
Map map = lib.colorList();

int k=0;
for (int i = 0; i < list.size(); i++) {

Person p = (Person)list.get(i);
if(p.getXmlColor()==null){
p.setXmlColor("rgb(0, 0, 0)");
}
if(i==0){
Color c = new Color(0,0,196);
p.setColor(c);
p.setXmlColor(map.get(k).toString());
}else{
// compare the color,every element need to compare
for (int j = 0; j < i; j++) {
//Person p1 = (Person)list.get(i);
Person p0 = (Person)list.get(j);
if(p.getLocationCode().equals(p0.getLocationCode())==true){
p.setColor(p0.getColor());
p.setXmlColor(p0.getXmlColor());
break;
}else{
p.setColor(changeColor(p0.getColor(), 10));
k=k+1;
System.out.println(k);
p.setXmlColor(map.get(k).toString());
}
}
}

}
System.out.println(clist.size());
return list;
}public static Map colorList(){
Map map = new HashMap();
String[] colors = {"rgb(240, 248, 255)","rgb(250, 235, 215)","rgb( 0, 255, 255)","rgb(127, 255, 212)","rgb(240, 255, 255)","rgb(245, 245, 220)","rgb(255, 228, 196)","rgb(255, 235, 205)","rgb( 0, 0, 255)","rgb(138, 43, 226)","rgb(138, 43, 226)","rgb(165, 42, 42)"};
for (int i = 0; i < colors.length; i++) {
map.put(i, colors[i].toString());
}
//if use xml file when load in tomcat server,the xml file not be find in tomcat/bin/
/*File file = new File("color.xml");
try {
Document parse = buider.parse(file);
NodeList colors = parse.getElementsByTagName("color");
for (int i = 0; i < colors.getLength(); i++) {
Element color = (Element)colors.item(i);
String index = color.getElementsByTagName("index").item(0).getFirstChild().getNodeValue();
String code = color.getElementsByTagName("code").item(0).getFirstChild().getNodeValue();
map.put(index, code);
}
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
return map;
}