Должен ли я повторять коллекцию Java, чтобы получить подмножество, или я должен сначала преобразовать ее в массив, а затем выполнить итерацию, чтобы получить ее?

Я вызываю API, который возвращает мне набор объектов. Я хочу получить подмножество объектов. Есть два решения, о которых я думаю. Какой из них даст мне лучшую производительность? Насколько я понимаю, вызов toArray()в основном будет перебирать коллекцию один раз. Если это правда, то решение одно будет лучше?

Решение 1 -

public static List<String> get(UUID recordid, int start, int count) {
    List<String> names = new ArrayList<String>();

    ...

    Collection<String> columnnames = result.getColumnNames();
    int index = 0; 
    for (UUID columnname : columnnames) {
        if ((index >= start) && (index - start < count)) {
            names.add(columnname);
        }
        index++;
    }

    return names;
}

Решение 2 -

public static List<String> get(UUID recordid, int start, int count) {
    List<String> names = new ArrayList<String>();

    ...

    Collection<String> columnnames = result.getColumnNames();
    String[] nameArray = columnnames.toArray(new String(columnnames.size()));

    for (int index = 0; index < nameArray.length && count > 0; index++, count--) {
        names.add(nameArray[index]);
    }

    return names;
}
6
задан Ekaba Bisong 25 July 2017 в 07:20
поделиться