2016-09-28 60 views
2

我無法弄清楚如何將數學運算應用於ArrayList的每個項目。 ArrayList將會被用戶輸入,所以不知道它裏面有多少物品。有沒有一種方法可以幫助做到這一點?如何將數學函數應用於ArrayList的每個對象

+2

Foreach循環? http://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work –

+6

您可以使用stream()。map將函數應用於列表的每個元素 – puhlen

+0

這給出了使用stream.map()的例子:https://www.mkyong.com/java8/java-8-filter-a-map-examples/ – mangotang

回答

0

爲@puhlen說,在Java 8中,使用流和lambda表達式

List liste = new ArrayList<>(); 
liste.stream().forEach(o->{ 
    //apply your math on o 
}); 

流爲您提供了許多其他functionnalities過濾,秩序,收集...使用它,如果你是在java8

或@尼爾 - locketz在java中說,前8使用foreach循環

List<type> liste = new ArrayList<>(); 
for(type o : liste){ 
    //math on object o here 
} 
+0

其實,這段代碼不會做任何事情。 – Bohemian

+1

您的流代碼不執行任何操作,因爲沒有終止方法。也就是說,直到終止方法(例如'collect()','reduce()'等)請求下一個元素時才調用map()。沒有終止方法,從字面上看沒有代碼會被觸發。 – Bohemian

+0

對不起,我認爲forEach和我寫地圖...編輯 – Tokazio

1

使用ListIterator - >https://docs.oracle.com/javase/7/docs/api/java /UTIL /名單Iterator.html

不同於普通IteratorListIterator將允許你存儲新計算的值返回到列表

ArrayList<Integer> source = ... 

ListIterator<Integer> iter = source.listIterator(); 

while(iter.hasNext()) 
{ 
    Integer value = iter.next(); 

    Integer newValue = Integer.valueOf(value.intValue() * 2); 

    iter.set(newValue); 
} 
相關問題