使用Java匹配具有指定属性的对象

时间:2011-04-29 01:34:50

标签: java collections

我有1,000,000个对象。 我需要将它们与指定范围内的4种不同属性相匹配。

  1. 长度(10米-20米)
  2. 宽度(12米 - 18米)
  3. 高度(3米-6米)
  4. 颜色(红色)
  5. 一个简单的for循环可以做到,但肯定不是最有效的方法。 我应该寻求实施什么类型的收藏?我应该怎样解决这个问题。

2 个答案:

答案 0 :(得分:2)

集合必须将所有数据加载到内存中,这对于数据集来说非常低效。您应该使用数据库 - 这就是它们的设计目标。

答案 1 :(得分:0)

NavigableSet可能适合您。您需要为每个属性定义不同的Comparator。基本上,从以一个属性排序的集开始,并获得适合该范围的子集。将子集放入由NavigableSet排序的另一个Comparator中,用于第二个属性...重复。

但是我不认为其中任何一个超过O(n)时间:P因为排序是O(nlogn)。至少它很有意思。