2014-01-29 37 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提到,沒有使用第三方庫,你遵循的方法是正確的路要走。您需要遍歷列表來填充另一個列表。

但是,如果你不介意使用第三方庫,然後,

你可以使用Apache的CollectionUtils.collect()方法,用TransformerUtils.invokerTransformer()方法一起。對於一個示例代碼應該是這樣的:

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

甚至可以用番石榴的Lists.transform(),雖然我沒有測試它自己。

+0

我總是想知道爲什麼叫*第三方*。 – Maroun

+1

@ᴍarounᴍaroun - 因爲它不僅僅在* Stock Java和Me *之間;) – SudoRahul

相關問題