Skip to main content

ArrayList vs LinkedList vs HashSet Performance Comparision



Conclusions

Inserting & Reading sequentially from Collection prefer LinkedList/ArrayList

Inserting & Reading/Deleting by Search/equals from Collection prefer HashSet

Inserting, ArrayList & LinkedList performs best while HashSet takes double the time

Reading, HashSet performs best while ArrayList & LinkedList are marginally less

Deleting, HashSet performs 10 times better than ArrayList & ArrayList performs 4 times better than LinkedList. LinkedList is slow because of sequencial search

Bottom line : unless you are not going to iterate using for(Integer i : list ) then prefer HashSet


Inserting/Reading/Deleting integer's from zero till count

JDK7Collectionactioncounttime ms
ArrayListInsert1000/1
LinkedListInsert1000/1
HashSetInsert1000/1
ArrayListInsert100005
LinkedListInsert100004
HashSetInsert100007
ArrayListInsert10000011
LinkedListInsert10000011
HashSetInsert10000021
ArrayListGet/Read1000
LinkedListGet/Read1000
HashSetGet/Read1000
ArrayListGet/Read100004
LinkedListGet/Read100003
HashSetGet/Read100004
ArrayListGet/Read10000010
LinkedListGet/Read10000010
HashSetGet/Read1000009

JDK6Collectionactioncounttime ms
ArrayListInsert1000/1
LinkedListInsert1000/1
HashSetInsert1000/1
ArrayListInsert100005
LinkedListInsert100004
HashSetInsert100007
ArrayListInsert10000012
LinkedListInsert10000011
HashSetInsert10000017
ArrayListGet/Read1000
LinkedListGet/Read1000
HashSetGet/Read1000
ArrayListGet/Read100005
LinkedListGet/Read100003
HashSetGet/Read100004
ArrayListGet/Read10000010
LinkedListGet/Read10000010
HashSetGet/Read1000009

JDK6Collectionactioncounttime ms
ArrayListinsert & remove 25%100000336
LinkedListGet/Read1000001188
HashSetGet/Read10000025

JDK7Collectionactioncounttime ms
ArrayListinsert & remove 25%100000337
LinkedListGet/Read1000001208
HashSetGet/Read10000032

Environment

MacBook Pro

Processor 2.3 GHz Intel Core i7

Memory 16 GB 1600 MHz DDR3

Software OS X 10.8 (12A269)

Comments

Anonymous said…
[url=http://www.giubbotti-moncleroutlet.com]outlet moncler[/url]
[url=http://www.guccihandbags-australia.com]http://www.guccihandbags-australia.com[/url]
[url=http://www.nbajerseys-australia.net]cheap nba jerseys[/url]
[url=http://www.supra-shoesnz.net]supra shoes[/url]
[url=http://www.supra-shoesnz.net]supra shoes[/url]
[url=http://www.chanel-newzealand.com]chanel nz[/url]
[url=http://www.giubbotti-moncleroutlet.com]outlet moncler[/url]
[url=http://oakleysunglasses-australia.org]http://oakleysunglasses-australia.org[/url]
[url=http://www.chanel-newzealand.com]chanel nz[/url]

Popular posts from this blog

JPA 2 new feature @ElementCollection explained

@ElementCollection is new annotation introduced in JPA 2.0, This will help us get rid of One-Many and Many-One shitty syntax.

Example 1: Stores list of Strings in an Entity

@Entity
public class Users implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
@ElementCollection
    private List<String> certifications = new ArrayList<String>();

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public List<String> getCertifications() {
        return certifications;
    }

    public void setCertifications(List<String> certifications) {
        this.certifications = certifications;
    }
..
}

        Users u = new Users();
        u.getCertifications().add("Sun Certified Java Programmer");
        em.persist(u);

Generated Tables

   Users
Column --> ID
    Row             1

Users_CERTIFICATIONS

Validating CSV Files

What is CsvValidator ?
  A Java framework which validates any CSV files something similar to XML validation using XSD.

Why should I use this ?
  You don't have to use this and in fact its easy to write something your own and also checkout its source code for reference.

Why did I write this ?
  Some of our projects integrate with third party application which exchanges information in CSV files so I thought of writing a generic validator which can be hooked in multiple projects or can be used by QA for integration testing.

What is the license clause ?
GNU GPL v2

Are there any JUnit test cases for me checkout ?
 Yes, source

How to integrate in my existing project ?

Just add the Jar which can be downloaded from here CsvValidator.jar and you are good.

Instantiate CsvValidator constructor which takes these 3 arguements

         // filename is the the file to be validated and here is a sample         // list - defines all the fields in the above csv file ( a field has index, type, isOptional, rege…