写一个方法求集合的比值,请大家帮忙!!!

现在有两组数据集合list
public class DataEntity{
private Long id;
private String name;
private Double value;
private Date date;
.....
}
一组为:
+----+----------+-------+------------+
| id | name | value1| date |
+----+----------+-------+------------+
| 1 | 北京大厦 | 12 | 2009-09-01 |
| 2 | 北京大厦 | 10 | 2009-09-02 |
| 3 | 北京大厦 | 11 | 2009-09-03 |
| 4 | 北京大厦 | 14 | 2009-09-04 |
| 13 | 南京大厦 | 14 | 2009-09-01 |
| 14 | 南京大厦 | 16 | 2009-09-02 |
| 15 | 南京大厦 | 18 | 2009-09-03 |
| 16 | 南京大厦 | 10 | 2009-09-04 |

另一组为:
+----+----------+-------+------------+
| id | name | value2| date |
+----+----------+-------+------------+
| 1 | 北京大厦 | 13 | 2009-09-01 |
| 2 | 北京大厦 | 12 | 2009-09-02 |
| 3 | 北京大厦 | 14 | 2009-09-03 |
| 4 | 北京大厦 | 11 | 2009-09-04 |
| 13 | 南京大厦 | 14 | 2009-09-01 |
| 14 | 南京大厦 | 15 | 2009-09-02 |
| 15 | 南京大厦 | 17 | 2009-09-03 |
| 16 | 南京大厦 | 10 | 2009-09-04 |

写一个方法按照时间对应关系得到
+----+----------+-------+------------+
| id | name |value1/value2| date |
+----+----------+-------+------------+
| 1 | 北京大厦 | 12/13 | 2009-09-01 |
| 2 | 北京大厦 | 10/11 | 2009-09-02 |
| 3 | 北京大厦 | 11/14 | 2009-09-03 |
| 4 | 北京大厦 | 14/11 | 2009-09-04 |
| 13 | 南京大厦 | 14/14 | 2009-09-01 |
| 14 | 南京大厦 | 16/15 | 2009-09-02 |
| 15 | 南京大厦 | 18/17 | 2009-09-03 |
| 16 | 南京大厦 | 10/10 | 2009-09-04 |

急用,请大家多帮忙,非常感谢!!!

[code="java"]public static List getList(List list1,
List list2) {
List result = new ArrayList();
for (DataEntity dataEntity1 : list1) {
for (DataEntity dataEntity2 : list2) {
if (dataEntity1.getId() == dataEntity2.getId())
dataEntity1.setValue(dataEntity1.getValue()
/ dataEntity2.getValue());
result.add(dataEntity1);
}
}
return result;
}[/code]

丢个内存数据库去sql,多好

用数据库实现多好呀

  1. 对两个集合分别按照时间和名字排序。排序的顺序可以自己定,比如升序还是降序。 具体实现就是写一个比较器DataEntityComparator,具体实现自己可以搜索一下相关文章。 然后调用 Collections的排序功能,实现集合排序。
  2. 如果你两个集合中数据是一一匹配的,只要从前面往后面,一个集合取一个对象,然后计算他们的value项的比值就好了。
  3. 如果不是严格一一匹配的,那就需要加入点判断,对比另外两个字段是否相等。但是从前往后扫描一次也就可以完成。