Which approach to use to iterate a collection in Java


Ways to iterate

There are different ways to iterate a collection in Java: - Foreach loop - Iterator - For Loop - While Loop - Stream API

Use foreach or stream api when possible and make sense

If possible, use foreach loop, or stream api, as they are simplest and less error-prone: no extra state to track. - But don’t use stream.foreach

All other approaches need track more states: - when use Iterator, need call iterator.hasNext(), iterator.next() - when use for loop, need track the index, same for the while loop

Iterator

  • Iterator works for all collections
    • compared with for loop, list.get(index) would have performance issue for linkedlist.
  • if(iterator.hasNext()) is less error prone, and easier to read and write compared with if(index == list.size()-1 )

For loop

In the last example, we use iterator to iterate the collection, and also track the index. It would be simpler to use for loop.

Similarly, the above code can be simplified to as below:

Labels

adsense (5) Algorithm (69) Algorithm Series (35) Android (7) ANT (6) bat (8) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) Java (186) JavaScript (27) JSON (7) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) regex (5) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) xml (5)