Java:在大型列表中搜索多个对象的有效方法

时间:2018-01-15 20:38:57

标签: java xml csv arraylist

我正在处理java代码以从XML文件中读取和检索特定数据,然后将其上传到数据库,我需要检索的数据由具有名称和内部节点的完整路径的CSV确定XML文件,在阅读CSV文件后,我将所有路径存储在List String中,CSV文件如下所示:

XMLPaths.CSV

XMLDate,Invoice/cbc:IssueDate
XMLSupplierName,Invoice/cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName
XMLRUC,Invoice/cac:AccountingSupplierParty/cbc:CustomerAssignedAccountID
XMLDocType,Invoice/cbc:InvoiceTypeCode
XMLID,Invoice/cbc:ID
XMLCustomerID,Invoice/cac:AccountingCustomerParty/cbc:CustomerAssignedAccountID
XMLCustomerName,Invoice/cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName
XMLMonetaryTotal,Invoice/cac:LegalMonetaryTotal/cbc:PayableAmount/
XMLCurrency,Invoice/cbc:DocumentCurrencyCode

目前正在使用DOM一般性地读取XML文件,并将来自所有节点的数据存储在名为XMLData的自定义类中,然后将每个XMLData对象添加到List } XMLData个对象,Tag包含节点的完整路径,就像CSV文件中定义的那样

XMLData.java

public class XMLData {

    public String Tag;
    public String Value;

    public XMLData() {        
    Tag= "";
    Value= "";
    }
    }

之后,我需要从CSV的{​​{1}}中选择List文件定义的元素并将其上传到XMLData,最简单的解决方案是搜索列表中的每个项目,如下所示:

database

但我认为如果 List <XMLData> XMLDataList = GetData(); List <String> listOfPaths = GetPaths(); for (String Path : listOfPaths) { for (XMLData Aux: XMLDataList){ if (Aux.Tag.equals(Path)) UploadToDB(Aux); } } 的{​​{1}}和List的{​​{1}}非常大,这会非常有用,是否有更有效的方法这个搜索?

0 个答案:

没有答案