如何将数组与新创建的List java进行比较

时间:2015-10-05 15:48:29

标签: java arrays list if-statement

我有一个String数组,其中包含以下信息:

name          street         streetnumber         City      house     flat
jetsons     jetstreet        12                  london       yes      no
jetsons     jetstreet        10                  washingston  n        y
jetsons     jetstreet        10                  washingston  n        y
jetsons     jetstreet        10                  washingston  yes      no 
ALF         alfStreet         3                  Shanghai      y        y

......等等

现在,练习是创建一个包含唯一数据的新列表,并进行分析。

livingDataArray analyzedDataList

while(livingDataArray=reader.readLine() != null){
        street = livingDataArray[1];
        streetNumber = livinDataArray[2];
        city = livingDataArray[3;]

    if(analyzedDataList.isEmpty()) {
        createNewEntry in analyzedDataList(); // that line is fine. ;)
    } else {
        int analyzedDataSize = analyzedData.size();
        for (int i = 0; i <= analyzedDataSize; i++){

                  if(analyzedData.get(i)[1] == street && 
                    analyzedData.get(i)[2] == streetNumber &&
                    analyzedData.get(i)[3] == city ) {

                   categorize(); // this line is fine also
                   addToAnalyzedData();
                  break;
                  } else if (!(analyzedData.get(i)[1] == street && 
                    analyzedData.get(i)[2] == streetNumber &&
                    analyzedData.get(i)[3] == city) && (i+1 ==
                    livingData.size())) {

                             categorize();
                             addToAnalyzedData();
                             break;
                    }


             }
        }
}

我的问题是,是否有足够的效率将其用于真正的大数据?像100.000行甚至更多?因为我不是关于if else的陈述。有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

String比较通过equals进行,而不是==How do I compare strings in Java?)。下一点:这看起来像是java中普通SELECT DISTINCT * FROM someWhere - 语句的实现。那么为什么不简单地将代码外包给数据库呢?如果不可能,Set最有可能是最有效的收藏。虽然我建议使用SQL来提高性能并节省本地PC上的资源。最后一点说明:在相同数据的循环中修改数据,如下所示:

int analyzedDataSize = analyzedData.size();
for (int i = 0; i <= analyzedDataSize; i++){
    ...
        addToAnalyzedData();

非常容易出现错误/异常。对于例如您在上述循环中检索和修改集合,而不更新集合的大小。在此示例中,此行为不会造成任何损害,但您应该谨慎处理。