2016-09-28 3 views
2

Ich habe Probleme herauszufinden, wie Sie eine mathematische Operation auf jedes Element einer ArrayList anwenden. Die ArrayList wird vom Benutzer eingegeben, so dass nicht angegeben werden kann, wie viele Objekte darin enthalten sind. Gibt es eine Methode, die dabei helfen könnte?Wie Sie eine mathematische Funktion auf jedes Objekt einer ArrayList anwenden

+2

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

+6

Sie können stream() verwenden, um eine Funktion auf jedes Element einer Liste anzuwenden – puhlen

+0

Dies gibt eine Beispiel für die Verwendung von stream.map(): https://www.mkyong.com/java8/java-8-filter-a-map-examples/ – mangotang

Antwort

0

als @puhlen sagt, in Java 8, verwenden Sie Strom und Lambda-Ausdruck

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

Stream Sie viele andere functionnalities bietet filtern, um, sammeln ... es verwenden, wenn Sie auf java8 sind

oder als @ neil-locketz sagt in Java vor 8 Verwendung einer foreach-Schleife

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

Eigentlich wird dieser Code überhaupt nichts tun. – Bohemian

+1

Ihr Stream-Code tut nichts, weil es keine Beendigungsmethode gibt. Das heißt, map() 'wird erst aufgerufen, wenn die abschließende Methode (zB' collect() ',' reduce() 'usw.) das nächste Element anfordert. Ohne Abschlussmethode wird buchstäblich kein Code ausgelöst. – Bohemian

+0

sorry, ich denke forEach und ich schreibe Karte ... bearbeitet – Tokazio

1

Verwenden ListIterator ->https://docs.oracle.com/javase/7/docs/api/java /util/Liste Iterator.html

Im Gegensatz zu Normal Iterator wird ListIterator können Sie in die Liste neu berechneten Wert speichern zurück

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); 
} 
Verwandte Themen