我有一个List<Solution> data = new ArrayList<Solution>();
其中保存用户信息。 Solution
包含用户电子邮件、地址、订单 ID 和信用卡信息以及交易 ID,我想找出重复的数据(相同的交易 ID 和相同的电子邮件地址)。所以,我必须比较所有数据,我这样做了
int totalNumberOfData = data.size();
int counter;
for (counter = 0; counter < totalNumberOfData; counter++) {
for (int j = 1; j < totalNumberOfData; j++) {
boolean faurdFound;
faurdFound = isFaurdDeal(counter, j);
if (faurdFound == true) {
break;
}
}
}
我想知道:
- 为了进行数据比较,这个解决方案是否有效或者有没有更好的方法来实现这个解决方案?
- 我正在使用
List
用于存储数据。如果我使用HashMap
而不是List
。会有效率吗?HashMap
不遵守秩序。但是,我必须维持秩序。什么可以更好地解决这个问题?
最佳答案
您的解决方案具有二次计算复杂度。它基本上意味着它消耗的时间与列表大小的平方成正比。您可以阅读 Big-O 表示法以了解此特征的更形式化 View - http://en.wikipedia.org/wiki/Big_O_notation
使用LinkedHashMap
并正确重写Solution
的equals()
和hashCode()
方法,您可以达到线性复杂性,因为检查存在性将在恒定时间内完成。
关于java - 存储和比较所有元素的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707195/