繁体   English   中英

存储和比较所有要素的有效方法

[英]efficient way to store and compare all elemets

我有一个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;
        }
    }
}

我想知道:

  1. 对于数据比较,如果此解决方案有效或是否有更好的方法来实现此解决方案?
  2. 我正在使用List来存储数据。如果我使用HashMap而不是List 会有效吗? HashMap不遵循顺序。但是,我必须保持顺序。 有什么更好的解决方案?

您的解决方案具有二次计算复杂性。 这基本上意味着它消耗的时间与列表大小的平方成正比。 您可以阅读有关Big-O表示法的信息,以了解有关此特征的更正式视图-http://en.wikipedia.org/wiki/Big_O_notation

LinkedHashMapSolution适当重写equals()hashCode()方法一起使用,可以达到线性复杂度,因为检查存在性的时间是固定的。

HashMapHashSet将允许更快地检查它们是否包含对象,因为它不需要扫描列表中的每个对象。 要注意的是,您需要提前确定正确的密钥,但是只要您能够做到,它们就可以很好地工作。

如果需要排序,则可以使用TreeMap (将元素排序)或LinkedHashMap (将元素按添加顺序排序)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM