2014-01-29 2 views
0

Я пытаюсь получить значение для каждого объекта TestClass в списке для нового списка строк.Упрощает способ получить значение из списка классов в список строк

Например:

public class TestClass { 

    private String testValue; 

    // setter and getter 
} 

И теперь в другом классе я делаю это так:

List<TestClass> testClassList = getTestClassList(); 

List<String> testStringList = new ArrayList<String>(); 

for(TestClass testClass : testClassList) { 
    testStringList.add(testClass.getTestValue()); 
} 

return testStringList; 

И мне интересно, есть ли простой способ сделать это?

+8

Нет, вам нужно итератировать его. Твой подход прекрасен. – Maroun

+0

Было бы неплохо, если бы вы могли сделать какое-то сопоставление из одного списка в другой, как в Perl или Python, но я не думаю, что для этого в Java существует компактная идиома. – JVMATL

+1

Это будет в Java 8. – Ingo

ответ

1

Как упоминалось в Maroun, без использования сторонних библиотек подход, которым вы следовали, - это правильный путь. Вам нужно перебирать список, чтобы заполнить другой.

Но если вы не возражаете, используя библиотеку третьей стороны, то,

вы можете использовать CollectionUtils.collect() метода Apache, наряду с TransformerUtils.invokerTransformer() методом. Пример кода для этого будет выглядеть следующим образом:

Collection<String> testValuesList = CollectionUtils.collect(testClassList, TransformerUtils.invokerTransformer("getTestValue")); 

И даже гуавы-х Lists.transform() можно использовать, хотя я не проверял сам.

+0

Я всегда удивляюсь, почему это называется * третьим лицом *. – Maroun

+1

@ ᴍarounᴍaroun - Потому что его не только между * Stock Java и Me * больше;) – SudoRahul

Смежные вопросы