Presentation is loading. Please wait.

Presentation is loading. Please wait.

ARRAYLIST Collections of Data. ArrayLists Array lists can grow and shrink as needed ArrayList is a generic class (similar to C++ template) ArrayList has.

Similar presentations


Presentation on theme: "ARRAYLIST Collections of Data. ArrayLists Array lists can grow and shrink as needed ArrayList is a generic class (similar to C++ template) ArrayList has."— Presentation transcript:

1 ARRAYLIST Collections of Data

2 ArrayLists Array lists can grow and shrink as needed ArrayList is a generic class (similar to C++ template) ArrayList has variety of methods for common tasks, for example: ArrayList accounts = new ArrayList (); // insert using add method accounts.add(new BankAccount(1001)); accounts.add(new BankAccount(2010)); // retrieve using get method BankAccount anAccount = accounts.get(1); // find out how many items in list int count = accounts.size(); // 0 to size-1 are valid BankAccount account2 = new BankAccount(3000); // update the list accounts.set(1, account2); // overwrites accounts.add(0, new BankAccount(1200)); // index < size // remove an item accounts.remove(1); // access all items in order for (int i=0; i<accounts.size(); ++i) System.out.println(accounts.get(i).getBalance());

3 ArrayList (continued) With an unparameterized ArrayList, any type of object may be stored, but the object must be cast when retrieved: ArrayList accounts = new ArrayList(); accounts.add(new BankAccount(1500)); BankAccount acct = (BankAccount) accounts.get(0); Exception will occur if cast is incorrect. Much better practice to use generic class (warning in Eclipse if use unparameterized)

4 Wrappers and Auto-boxing Not in C++ (C++ evolved from C, Java designed from scratch as OO) Numbers are not objects, can’t place directly in ArrayLists All primitive types have “wrapper” classes Wrapper contains one value of corresponding primitive type Also have useful static methods (mostly conversions) PrimitiveWrapper byteByte booleanBoolean charCharacter doubleDouble floatFloat intInteger longLong shortShort

5 Wrappers and Auto-boxing (continued) Starting with Java 5.0, conversion between primitive types and wrapper classes is automatic, called auto-boxing (auto-wrapping would be more consistent!) Examples: Double d = 29.95; // Double d = new Double(29.95); double x = d; // auto-unbox, same as double x = d.doubleValue(); Double e = d + 1; // auto-unbox, add 1, auto-box ArrayList data = new ArrayList (); data.add(32.14); double x = data.get(0);

6 Efficiency Note Even though you don’t have to write the code, if you have a long sequence of primitive types (numbers or chars), use an array rather than an ArrayList for efficiency

7 Enhanced/Iterated for loop Convenient new syntax for iterating an array or ArrayList: double[] data = {... }; double sum = 0; for (double e : data) { sum = sum + e; } With ArrayLists: ArrayList accounts;... add, create sum for (BankAccount a : accounts) { sum += a.getBalance(); }

8 2D Arrays Similar to C++, but must always allocate memory final int ROWS = 3; final int COLS = 3; String[][] board = new String[ROWS][COLS];

9 More on Arrays etc. First choice will normally be ArrayList, unless storing large collection of primitives OR need 2D Use “for each” loop pattern when processing all elements To make a copy, use the clone method*: double [] data = new double[10];... double [] prices = (double []) data.clone(); Or use System.arraycopy if not copying the entire array (see book or API for details) Clone has some flaws (must call super.clone, issues depending on whether new is called, issues with CloneNotSupportedException). Probably OK to use for arrays, but copy constructor often preferred for other object. Details are beyond our scope… but read the following: http://stackoverflow.com/questions/2427883/clone-vs-copy-constructor-which-is- recommended-in-java

10 Vector or ArrayList? The API for these is similar, but there are some differences in implementation. If you’re curious, check out: http://www.javaworld.com/article/207742 5/java-se/vector-or-arraylist-which-is- better.html?null


Download ppt "ARRAYLIST Collections of Data. ArrayLists Array lists can grow and shrink as needed ArrayList is a generic class (similar to C++ template) ArrayList has."

Similar presentations


Ads by Google