Differece between ArrayList and LinkedList

Differece between ArrayList and LinkedList

An array list is implemented as an array. A LinkedList is implemented as a series of separate nodes linked by references.
Although they both support the same methods, that has performance implications. Linked lists are better at inserting and deleting arbitary elements, but are slow to reference an element by index.

Similar Messages

  • Design choice between ArrayList and LinkedList

    Can someone clarify me which is better suited (efficient) for use?
    It appears to me that both can be used very much interchangeably at least from functionality point of view. :(

    Using the following code (and I'm sure someone will come nitpicking about it) I get the (expected, at least by me from prior experience) result that iteration over a LinkedList is about twice as fast as iteration over an ArrayList, but lookup operations on an ArrayList are substantially faster:
    package jtw.test;
    import java.util.*;
    public class SpeedTest {
        public static void main(String... args) throws Exception {
            List<Integer> linked = new LinkedList<Integer>();
            List<Integer> arr = new ArrayList<Integer>();
            for (int i = 0; i < 1e3; i++) {
                linked.add(i);
                arr.add(i);
            long r = 0;
            Date startLinked = new Date();
            for (int i = 0; i < 1e3; i++) {
                for (Integer q: linked) {
                     r += q;
            Date stopLinked = new Date();
            System.out.println("Total: " + r);
            r = 0;
            Date startArr = new Date();
            for (int i = 0; i < 1e3; i++) {
                for (Integer q: arr) {
                     r += q;
            Date stopArr = new Date();
            System.out.println("Total: " + r);
            System.out.println("LinkedList iteration: " + startLinked + " to " + stopLinked + " took " + (stopLinked.getTime() - startLinked.getTime()));
            System.out.println(" ArrayList iteration: " + startArr + " to " + stopArr + " took " + (stopArr.getTime() - startArr.getTime()));
             r = 0;
            startLinked = new Date();
            for (int i = 0; i < 1e3; i++) {
                for (int j = 999; j >= 0; j--) {
                     r += linked.get(j);
            stopLinked = new Date();
            System.out.println("Total: " + r);
            r = 0;
            startArr = new Date();
            for (int i = 0; i < 1e3; i++) {
                for (int j = 999; j >= 0; j--) {
                     r += arr.get(j);
            stopArr = new Date();
            System.out.println("Total: " + r);
            System.out.println("LinkedList lookup: " + startLinked + " to " + stopLinked + " took " + (stopLinked.getTime() - startLinked.getTime()));
            System.out.println(" ArrayList lookup: " + startArr + " to " + stopArr + " took " + (stopArr.getTime() - startArr.getTime()));
    }Gets the result:
    D:\jdk1.6.0_05\bin\java -Didea.launcher.port=7540 "-Didea.launcher.bin.path=C:\Program Files\JetBrains\IntelliJ IDEA 8.0.1\bin" -Dfile.encoding=windows-1252 -classpath "D:\jdk1.6.0_05\jre\lib\charsets.jar;D:\jdk1.6.0_05\jre\lib\deploy.jar;D:\jdk1.6.0_05\jre\lib\javaws.jar;D:\jdk1.6.0_05\jre\lib\jce.jar;D:\jdk1.6.0_05\jre\lib\jsse.jar;D:\jdk1.6.0_05\jre\lib\management-agent.jar;D:\jdk1.6.0_05\jre\lib\plugin.jar;D:\jdk1.6.0_05\jre\lib\resources.jar;D:\jdk1.6.0_05\jre\lib\rt.jar;D:\jdk1.6.0_05\jre\lib\ext\dnsns.jar;D:\jdk1.6.0_05\jre\lib\ext\localedata.jar;D:\jdk1.6.0_05\jre\lib\ext\sunjce_provider.jar;D:\jdk1.6.0_05\jre\lib\ext\sunmscapi.jar;D:\jdk1.6.0_05\jre\lib\ext\sunpkcs11.jar;F:\dev\Euler\out\production\Euler;C:\Program Files\JetBrains\IntelliJ IDEA 8.0.1\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain jtw.test.SpeedTest
    Total: 499500000
    Total: 499500000
    LinkedList iteration: Wed Jan 21 07:32:41 CET 2009 to Wed Jan 21 07:32:41 CET 2009 took 30
    ArrayList iteration: Wed Jan 21 07:32:41 CET 2009 to Wed Jan 21 07:32:41 CET 2009 took 53
    Total: 499500000
    Total: 499500000
    LinkedList lookup: Wed Jan 21 07:32:41 CET 2009 to Wed Jan 21 07:32:42 CET 2009 took 424
    ArrayList lookup: Wed Jan 21 07:32:42 CET 2009 to Wed Jan 21 07:32:42 CET 2009 took 22
    Process finished with exit code 0Given the internal representation of the datatypes, this is to be expected.

  • Both of the advantages of ArrayList and LinkedList are needed.

    Hi there,
    I wonder how if I want performance on random access an ArrayList and also remove elements in any position of the List? As far as I know that a LinkedList is the best choice if I want to remove elements in any position of the List, but it's slow on traversing the List. Sometimes it's hard to choose between ArrayList and LinkedList, is there a way that I could have both advantages of ArrayList and LinkedList?
    Any suggestion?
    Thanks,
    Jax

    I think you might be interested in the data structure
    called a deque. It is built for fast insertions
    at both ends and is usually implemented as a linked
    list of arrays. The standard collections API does not
    offer this data structure (I wish it did). So you have
    to find a 3rd party implementation. Try searching
    Google: http://www.google.com/search?q=java+deque
    Thanks nasch and pervel for the information. What do you think if I do something like this?
    List a = new ArrayList();
    // perform some tasks that is fast with ArrayList
    List b = new LinkedList(a);
    // perform some tasks..
    Although a new object is created, but that perform better than one ArrayList or one LinkedList solely.

  • When to choose ArrayList and LinkedList ?

    Please let me know which list type to use and when ? Pros Cons .. Advantages Disadvantages
    ArrayList vs LinkedList ?

    Here is a good place to start [http://www.google.co.uk/search?q=arraylist+vs+linkedlist] 154,000 hits. I think most of the arguments are covered here. ;]

  • Differece between OWB and ODI

    Dear All,
    I would like to know how OWB is different from ODI and would appreciate any resources to understand how OWB 10g works, how to create mappings, what is OWB 10g architecute and so on.. I know how ODI works but do not have any idea how OWB works since I never worked on OWB.
    I wont to learn OWB 10g.
    Thanks and Regards

    Hi,
    This Oracle By Example link may help:
    http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/10g/r2/owb/owb10gr2_obe_series/owb10g.htm

  • Which is better? ArrayList or LinkedList

    Do you know which one is better between ArrayList and LinkdedList in terms of performance, speed and capacity?
    Which one do you suggest to use ?
    Thanks

    It depends upon how the list is going to be used. ArrayLists and LinkedLists work differently -- you need to think about how they each store their data.
    ArrayLists store their list items in, well, arrays. This makes them very fast at addressing those items by index #. So any implementation that needs a lot of random access to the list, such as sorting, is going to be relatively fast.
    The downside of storing the list in an array presents itself when it comes time to add more items to the list. When it runs out of space in the array, it must create a new larger array and copy the items over to it. Also, if you need to insert or remove an item anywhere other than the end of the list, ArrayList must shift the subsequent items in the list by doing an array copy.
    This can be a real drag if you're implementing a queue. This is where LinkedList shines. Each item in the list points to the next and previous ones in the list. Inserting, appending or removing list items involves a couple simple assignment statements. No reallocations or large memory copies are involved. Access is easy as long as it is sequential.
    Random access in a linked list is problematic however. In order to get to the Nth item in the list, LinkedList must start with the first item in the list and step through the list N-1 times. An order of magnitude slower than using an ArrayList.

  • What is the difference between ActionEvent and SelectionEvent?

    Technical Environment:
    Oracle jDeveloper 11.1.1.4.0
    Windows XP
    I think there is something behind ActionEvent and SelectionEvent that makes my code doesn't work.
    Here is my problem:
    I have three tables. One is a master table, contains summary of something. If I select a row on this table, the second table will show some data, based on the selected row on the first table. Yup, this is a ViewLink, and it is working perfectly. Now, I want the same thing works between the second and third table. If I select a row in second table, the third table should show some data, based on the selected row on the second table. The third table is a ViewObject with some bind parameters. I need to assign values to these parameters, which I get the value from the selected row on the second table. How can I do this?
    I have tried to use ExecuteWithParams. Select the row from second table, get the values, pass it into ExecuteWithParams Form, execute and.. it works.. I get the result on the third table. Here is the code how I do that:
    public void updateTableEvent(ActionEvent actionEvent) {
    DCIteratorBinding iter = gen.getIteratorBinding("SearchView3Iterator");
    Row rw = iter.getCurrentRow();
    oracle.jbo.domain.Date strDate = (oracle.jbo.domain.Date) rw.getAttribute("Tgl");
    String strRkno = (String) rw.getAttribute("Rkno");
    oracle.jbo.domain.Number strRkId = (oracle.jbo.domain.Number) rw.getAttribute("Rkid");
    DCIteratorBinding iterParam = gen.getIteratorBinding("variables");
    iterParam.getBindingContainer().getVariableManager().setVariableValue("ExecuteWithParams_pRkId", strRkId);
    iterParam.getBindingContainer().getVariableManager().setVariableValue("ExecuteWithParams_pTgl", strDate);
    iterParam.getBindingContainer().getVariableManager().setVariableValue("ExecuteWithParams_pRkNo", strRkno);
    OperationBinding operationBinding = gen.getOperationBinding("ExecuteWithParams");
    Object result = operationBinding.execute();
    But when I tried the same thing on SelectionEvent, I got nothing.. no error and also no result. What I want is just select the row on the second table, and get the result on the third table, with no any button pressing. Here is the code:
    public void onRowSelect(SelectionEvent selectionEvent) {
    DCIteratorBinding iter = gen.getIteratorBinding("SearchView3Iterator");
    Row rw = iter.getCurrentRow();
    oracle.jbo.domain.Date strDate = (oracle.jbo.domain.Date) rw.getAttribute("Tgl");
    String strRkno = (String) rw.getAttribute("Rkno");
    oracle.jbo.domain.Number strRkId = (oracle.jbo.domain.Number) rw.getAttribute("Rkid");
    DCIteratorBinding iterParam = gen.getIteratorBinding("variables");
    iterParam.getBindingContainer().getVariableManager().setVariableValue("ExecuteWithParams_pRkId", strRkId);
    iterParam.getBindingContainer().getVariableManager().setVariableValue("ExecuteWithParams_pTgl", strDate);
    iterParam.getBindingContainer().getVariableManager().setVariableValue("ExecuteWithParams_pRkNo", strRkno);
    OperationBinding operationBinding = gen.getOperationBinding("ExecuteWithParams");
    Object result = operationBinding.execute();
    So.. what is actually happening here? What is the differece between ActionEvent and SelectionEvent? Why do they give me difference response?
    Thanks for any comments.
    Regards,
    Novan Ananda

    Hi,
    ActionEvent :
    A semantic event which indicates that a component-defined action occured. This high-level event is generated by a component (such as a commandbutton,commandLink) when the component-specific action occurs (such as being pressed).
    SelectionEvent :
    Event that is generated when the selection of a component changes.
    //you can also search in api's

  • HI experts can u tell me the difference between LIS AND LOCOCKCPIT ext ?

    hi experts iam in learning stage ,so plz can some one tell me the differece between LIS and LO COCKPIT  extractions and various steps invovlved in them , sorry for being pain in the back i did search in the previous posting didnt find the right answer . cheers thanks

    Hi,
    LO **** pit 
    -->BW CONTENT EXTRACTOR......
    ---> it uses Readymadely available datasorce
    --->LO cockpit supports V3 update(BACK GROUND SCHEDULING Jobs)
    LIS
    ---> CUSTOMER GENERATED EXTRACTOR.
    > need to cretae everything...
    --->LIS does't supports V3 update mode... it supports only V1 (SYNCHRONUS)& V2(ASYNCHRONUS UPDATE)
    check these links:
    Difference B/n LOCOCKPIT &LIS
    differences between LO and LIS
    Differences between LIS,LO,CO/PA and FI-SL extractors
    Difference between LIS  and LO Cockpi interma of table?
    difference between LIS and LO Setup run
    LIS and LO Cockpit
    hope it helps...............
    Regards
    chandra sekhar
    Edited by: chandra  sekhar on Dec 16, 2008 2:01 PM

  • Is there a difference between RTPManager and RTPSessionMgr

    I would like to know if there is a differece between RTPManager and RTPSessionMgr.
    The thing is that i have 10 transmisors that create RTPSessionMgr but my receivers create RTPManagers.
    Is an RTPManager supossed to get all messages coming form RTCP even if they don come from the manager of the transmissor. I'm having a real problem with this.
    Thank all

    iBooks is for reading pdfs and epubs. iBooks Author is for creating iBooks. You can do a search in Spotlight for iBooks Author to find where it is located. It should be in your Applications folder.
    I'm not sure how you downloaded iBooks, as it's not available in the Mac App Store.

  • What is differece between aapex2.x and apex 3.2

    Hi All
    what is differece between APEX 2.X and APEX 3.2
    And how to convert a fmb to xml in APEX 2.X
    I downloade the APEX 3.2 how install it
    please guide
    Thanks And Regards
    Vikas

    what is differece between APEX 2.X and APEX 3.2That's impossible to cover or even properly summarize in a forum post, and is easy enough to find:
    [APEX 2.2 new features|http://www.oracle.com/technology/products/database/application_express/html/whats_new_2.2.html]
    [APEX 3.0 new features|http://www.oracle.com/technology/products/database/application_express/html/3.0_new_features.html]
    [APEX 3.1 new features|http://www.oracle.com/technology/products/database/application_express/html/3.1_new_features.html]
    [APEX 3.2 new features|http://www.oracle.com/technology/products/database/application_express/html/3.2_new_features.html]

  • ArrayList vs LinkedList

    Can anyone explain with a real time example where these will be used , & whats the difference between them....
    1 ) ArrayList (vs) LinkedList (vs) Collection
    2 ) Abstract Class (vs) Interface

    Some more to add to that .,
    Abstract class vs Interfaces
    Extending threads vs Implementing runnable interface
    HashTable vs HashMap
    Iterator vs Enumeration
    string vs StringBuffer
    Reflections vs Introspection
    Array vs Vector
    ArrayList vs LinkedList
    Throw vs Throws
    can anyone help me in this regard?Most or all of these should be addressed in one of the following or in a google search of the exact terms. Do some research on your own, and then come back with more specific questions. These forums are not a particularly effective substitute for attending class or reading a textbook.
    Sun's basic Java tutorial
    Sun's New To Java Center. Includes an overview of what Java is, instructions for setting up Java, an intro to programming (that includes links to the above tutorial or to parts of it), quizzes, a list of resources, and info on certification and courses.
    http://javaalmanac.com. A couple dozen code examples that supplement The Java Developers Almanac.
    jGuru. A general Java resource site. Includes FAQs, forums, courses, more.
    JavaRanch. To quote the tagline on their homepage: "a friendly place for Java greenhorns." FAQs, forums (moderated, I believe), sample code, all kinds of goodies for newbies. From what I've heard, they live up to the "friendly" claim.
    Bruce Eckel's Thinking in Java (Available online.)
    Joshua Bloch's Effective Java
    Bert Bates and Kathy Sierra's Head First Java.

  • Assignment Between Structure and Single Field - CL_ABAP_CONTAINER_UTILITIES

    Hi, Need some help on this as I'm not familiar with Java programming.
    Basically in ABAP, we can assign a structure (with complex data type) into a field (please refer to link below).
    Now we need to do similar thing in PI, since PI only support Java then we need to perform similar logic as in CL_ABAP_CONTAINER_UTILITIES =>FILL_CONTAINER_C, but in Java. Understand that there's no concept of structure in Java, in this case PI will receive multiple fields (with different data type) and need to combine them into one field.
    I tried few Java command/method but it doesnt give me the same result as in the ABAP class. Appreciate your help if you know anything about this or some sample program that i can test. thanks!
    SAP Help Reference for ABAP
    [ABAP - Assignment Between Structure and Single Field|http://help.sap.com/saphelp_nw04/helpdata/en/79/c554d3b3dc11d5993800508b6b8b11/frameset.htm]

    Hello Rika,
    In java we have collection framework instead...
    As per your requirement I understood :
    1. You will get a list of different type of objects as input.
    2. You want to club it in one unit....right...
    3. Once done.....I dont know what you will do with that.....I guess pass it somewhere.....
    Now, You can use ArrayList in java to club all your objects in one unit....and send it to any function you want....
    Arraylist list= new ArrayList();
        list.add(new MachineGun());
        list.add(new Gun());
    But there be carefull when you extract data from List....as you need to type cast them accordingly....
    Start trying it...and revert back if you face any problems.....
    While extracting you will have to use something like :
    if(list.get(0).getClass().getSimpleName().equals("MachineGun")){
       //here you can safely cast in the right class
           MachineGun mgun= (MachineGun )list.get(0);   

  • Different Between In and Join Function of Query

    Hi Team,
    I have confuse for the below query getting different count.
    Version DB :-
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE     11.2.0.1.0     Production
    TNS for Linux: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production
    Query:-1
    Getting Count :-3917
    SELECT COUNT (*)
      FROM stg_ser_level_inv_db a, map_stg_gsm_serv b
    WHERE a.account_number_v IN (SELECT account_number_v
                                    FROM map_transaction_number MAP
                                   WHERE MAP.trans_type_v IN ('F', '4'))
       AND a.trans_num_v
                        IN (SELECT trans_num_v
                              FROM map_transaction_number MAP
                             WHERE MAP.trans_type_v IN ('F', '4'))
       AND a.trans_type_v
                         IN (SELECT trans_type_v
                               FROM map_transaction_number MAP
                              WHERE MAP.trans_type_v IN ('F', '4'))
       AND a.acct_no = b.stg_account_number
       AND a.serv_account_number_v= b.stg_serv_link_code
       AND NOT EXISTS (
              SELECT 1
                FROM cb_sub_ar_ap ar
               WHERE ar.account_link_code_n = b.ab_serv_acc_link_code
                 AND ar.bill_cleared_flg_v = 'N'
                 AND ar.trans_num_v IN (SELECT target_trans_num_v
                                          FROM map_transaction_number MAP
                                         WHERE MAP.trans_type_v IN ('F', '4')))--3917why when u IN condition and join condition count is different. please let me know why?
    Thanks for advance ...
    Second :-2 Join Condition
    Total Count :-789948
    select COUNT(*)
        FROM STG_SER_LEVEL_INV_DB A , MAP_STG_GSM_SERV B,MAP_TRANSACTION_NUMBER ARAP_CUR
    WHERE  A.ACCOUNT_NUMBER_V = ARAP_CUR.ACCOUNT_NUMBER_V
    AND A.TRANS_NUM_V  = ARAP_CUR.TRANS_NUM_V
    AND A.TRANS_TYPE_V = ARAP_CUR.TRANS_TYPE_V
    AND A.ACCT_NO = B.STG_ACCOUNT_NUMBER
    and a.SERV_ACCOUNT_NUMBER_V  = B.STG_SERV_LINK_CODE
    and ARAP_CUR.TRANS_TYPE_V in ('F','4')
    and not exists (select 1 from CB_SUB_AR_AP ar
          where ar.account_link_code_n = B.AB_SERV_ACC_LINK_CODE
          and AR.BILL_CLEARED_FLG_V = 'N'
          and ar.trans_num_v = ARAP_CUR.TARGET_TRANS_NUM_V);---789948

    Hi,
    Whenever you have a problem, please post a complete test script that people can run to re-create the problem and test their ideas. Include a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all the tables involved, and the results you want from that data. In this case, data that produced no more than 10 rows of output for each query should be plenty.
    Simplify the problem as much as possible. For example, it looks like both your queries are joining tables a and b the same way. Why not pretend that you have only 1 table, ab, that is the same as the result set of joining a and b? Post CREATE TABLE and INSERT statements for the relevant columns of ab.
    Explain, using specific examples, how you get those results from that data.
    Always say what version of Oracle you're using (e.g. 11.2.0.2.0).
    See the forum FAQ {message:id=9360002}
    There are several differences between those two queries.
    For one thing, Query 1 is doing a 2-way join between a and b, and then filtering that result set by comparing it to another table (let's call it map). So if a contains 5 rows and b contains 2 rows, the result set will contain at most 5 * 2 = 10 rows. Perhaps only 8 of those 10 rows will have matching rows in map. Note that the number of rows in map, or how many rows in map match rows in a or b doesn't matter. Query 2, on the other hand, is doing a 3-way join of a, b and map, so if map has 100 rows, the result set could have as many as
    (5 * 2) * 100 = 1000 rows. We know that it won't have that many rows, because only 8 out the rows from the a-b join have matching rows in map, but the result set of the 3-way join could still have as many as
    (8) * 100 = 800 rows.
    Since you didn't post test versions of your tables, I'll use tables from the scott schema to illustrate. Scott.dept has 4 rows, only 3 of which match rows in scott.emp, so
    SELECT  d.*
    FROM     scott.dept  d     -- tables a and b in your query play this role
    WHERE     d.deptno  IN (
                      SELECT  e.deptno
                   FROM     scott.emp  e     -- map plays this role in your query
    ;produces 3 rows of output. Exactly how many rows are in emp (that number happens to be 14) and how many of those rows match rows in dept (that happens to be 14, also) doesn't matter; all that matters in the query above is that 3 of the rows in dept have matches. However, the fact that 14 of the rows in emp have matches is important in the query bleow:
    SELECT     d.*
    FROM     scott.dept  d
    JOIN     scott.emp   e  ON  d.deptno  = e.deptno
    ;which produces 14 rows of output.
    Another differece is that Query 1 says that there are 3 conditions that relate table a to map; a given row in a will be included in the result set if any row in map meets condition 1, any row in map meets condition 2, and any row in map meets condition 3. It doesn';t matter if you have to look at 2 or 3 rows in map to meet all those conditions. Query 2 says that a row from a will be included only if there is a single row in map that meets all 3 conditions.

  • Different between KDR and KDM

    Dear all,
    I am very confused on the following two OBYC transactions when come to Exchange rate different posting.
    Can you kindly give me an example of the following two transaction so that I can put our correct GL to the correct transaction in the OBYC? Thanks
    Exchange rate differences in the case of open items (KDM)
    Exchange rate differences in the case of open items arise when an invoice relating to a purchase order is posted with a different exchange rate to that of the goods receipt and the material cannot be debited or credited due to standard price control or stock undercoverage/shortage.
    Differences due to exchange rate rounding, Materials Management (KDR)
    An exchange rate rounding difference can arise in the case of an invoice made out in a foreign currency. If a difference arises when the posting lines are translated into local currency (as a result of rounding), the system automatically generates a posting line for this rounding difference.
    Tuffy

    Dear Kedar,
    thanks, however I am still quite confuse on KDR.
    You said For KDR
    If you did MIRo in USD and translate this to local currency (INR) if there is differece between exchange rates in such cases system uses G/L accounts attached with KDR.
    Can you give me another example, and why I did miro in USD and later have to translate to local currency (INR)? Thanks.
    Tuffy

  • How to create a program that accepts 5 digits from the user between 0 and 9

    how to create a program that accepts 5 digits from the user between 0 and 9 then put them in ascending order using link-list method..

    You can use a scanner to get user input from the command line.
    import java.util.*;
    public class Test {
        private List<Integer> list;
        private Scanner in;
        public static void main (String... args) {
            new Test ();
        public Test () {
            list = new LinkedList<Integer> ();
            in = new Scanner (System.in);
            for (int i = 0; i < 5; i ++) {
                System.out.format ("Please enter a number (%d more): ", (5 - i));
                list.add (in.nextInt ());
            Collections.sort(list, new Comparator<Integer> () {
                public int compare (Integer i1, Integer i2) {
                    return i2 - i1;
            System.out.println (list);
    }

Maybe you are looking for