Java - 对象比较算法

Java - Objects comparing algorithm

我有以下决定table:

我的任务是使用选择的属性集(例如 {DistanceCapacity 将所有对象(S1、S2、S3...)相互比较})。所以为了实现这一点,我必须创建两个循环(一个嵌套)并使用 IF 条件。

当对象集很小时,一切正常。但是当集合很大(例如 10000 个对象)时,这个解决方案的性能越来越差...

这是另一种更快的 "smarter" 方法吗?

伪代码:

第一步。HashMap<String, ArrayList<String>> hashMap = new HashMap<>();
步骤 2. 对每个对象 s 做

String key = getSelectedAttributesValueInString();
if (!hashMap.containsKey(key)) {
    hashMap.put(key, new ArrayList<String>());
}
hashMap.get(key).add(s.getName); 

此处 getSelectedAttributesValueInString 是所有选定属性值的串联。

例如:对象s1 属性{Distance, Capacity} 函数return ShortYES

第 3 步。现在打印长度大于 1 的 hashMap arraylist 值。

复杂度分析:

你的方法 O(n^2)

我的方法 O(n)(因为 HashMap 添加和获取复杂度是 O(1))