0

我正在从数据库视图中提取代表单行的数据列表(ArrayList)。虽然每列通常有一个值,但有些列有一个分隔的字符串值,例如:

CompanyID  CompanyName   ContactIDs  Contacts
49         Test Company  5;9         Alice;Bob

目前,我正在提取第一个值的子列表,然后用 解析其余的值String.split(),但我担心性能,尤其是当我一次加载数百个这些对象时。这是我的方法:

public void loadFromData(List data) {
    getCompany().load(data.subList(0, 2)); 
    //Pulls 49 and Test Company and loads it into a Company object

    getContacts().clear();
    //getContacts() retrieves an ArrayList of Contact objects
    String[] contactIds = ((String)data.get(2)).split(";");
    String[] contactNames = ((String)data.get(3)).split(";");

    List data = new ArrayList();
    for (int i = 0; i < companyCategoryIds.length; i++) {
        data.clear();
        data.add(contactIds[i]);
        data.add(getCompany().getCompanyId());
        data.add(contactNames [i]);
        getContacts().add(new Contact().load(data));
    }    
}

有没有更好的方法来做到这一点?或者这可能是划分我给出的列表的最有效方法?

假设我无法更改列表本身,则通过 ';' 加入 在我得到它之前在数据库的服务器端完成。

提前致谢!

4

1 回答 1

1

嗯,String.split()是最直接的方法,但它确实使用正则表达式,如果你经常这样做,它可能会有点慢。但是,由于您正在进行数据库访问(这要慢得多),所以我现在还不会担心。在尝试摆脱 String.split() 之前,运行分析器以查看您是否真的有问题。优化不是因为你觉得某事很慢而你做的事情。

于 2013-10-17T20:16:21.240 回答