File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Beginning Java and the fly likes Which Collection to choose? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Which Collection to choose?" Watch "Which Collection to choose?" New topic
Author

Which Collection to choose?

Dmitry Zhuravlev
Ranch Hand

Joined: Apr 14, 2010
Posts: 93
Guys, I need advise concerning which Collection to use.

I want to be able to do the following with my collection:

1) iterate through collection using next and previous, and if there are no next element go to the first one
2) add items to the end of collection
3) remove items with any index from the collection

At the moment I'm trying to implement this using simple ArrayList with ListIterator. For example, to get the next value from my ArrayList I have written the following:



But probably this way is not a good one? Any comments?
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 40061
    
  28
If you look in the Java™ Tutorials you will find details of all the well-known collections. You are describing a List; ArrayList is a good choice for your requirements. Your method will probably fulfil your requirements for iteration.

Look for the get() add() and remove() methods in the List interface and the ArrayList class.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14435
    
  23

Given the requirements that you describe, a LinkedList might be more efficient than an ArrayList.

Especially removing elements from the middle of a collection (requirement 3) is expensive on an ArrayList, but cheap on a LinkedList.


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 8 API documentation
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 40061
    
  28
Good point, Jesper. I think I missed that requirement 3.
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19792
    
  20

Jesper Young wrote:Given the requirements that you describe, a LinkedList might be more efficient than an ArrayList.

Especially removing elements from the middle of a collection (requirement 3) is expensive on an ArrayList, but cheap on a LinkedList.

But there's a trade-off. With LinkedList you first need to find the position to remove from before you can remove anything. In the end the two can be just as (in)efficient if you need to remove elements from somewhere in the middle, as both require O(n) time - the LinkedList requires O(n) time for finding the element, then O(1) to remove, whereas for ArrayList it's the other way around.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
learning Freak
Greenhorn

Joined: Jan 20, 2010
Posts: 5
Good to use ArrayList collection object for the requirment.
Because it is easy to use ArrayList and perform the iteration and as well as random access operations .

with LinkedList manipulating is very easy, and as long as its used for iteration purposes only and not for random accessing, it’s the best solution.

ArrayList is slow in manipulating the objects like adding /removing the objects randomly compared to Linked list.
where as Linked list follows the sequential process (no random) it is quite fast in manipulating.

In other words

The difference is in the performance characteristics. Because of the way ArrayList and LinkedList work internally, some operations are more efficient on ArrayList, and some operations are more efficient on LinkedList.

For example, inserting an element in the middle of the list is relatively slow on ArrayList, but fast on LinkedList. And looking up a random element in the list is fast on ArrayList, but slow on LinkedList. Which of the two you should choose depends on what you're going to use the list for...
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14435
    
  23

"learning Freak", check your private messages. We mean it!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Which Collection to choose?