Unformatted text preview:

CS112-2012S-05 I/O and ArrayList 105-0: More on I/O• Lots of ways to use Scanner class• Always get more infomation by Googling ’Scanner Java’• Works for just about any Java library class – first hit will be the Oracle page• Read from a file in addtion to reading from the keyboardScanner sc = new Scanner(new File("myNumbers"));• method nextLine() can get the next line of input in one string• method hasNextLine() can determine if there is a next line to read05-1: More on I/OScanner scan = new Scanner(new File("myNumbers"));while (scan.hasNextLine()){String nextLine= scan.nextLine();// Do something with the next line of input}05-2: More on I/O• Creating a new File may cause an error• File might not exist• Constructor is tagged as a method that may cause an error• We need to either handle the error (we’ll do this later), or flag our method as one that can cause an error• This kind of an error is called an exception• Example with Eclipse05-3: More on I/Oimport java.io.File;import java.util.Scanner;import java.io.IOException;public static void main(String args[]) throws IOException{Scanner scan = new Scanner(new File("myNumbers"));while (scan.hasNextLine()){String nextLine= scan.nextLine();// Do something with the next line of input}}05-4: More on I/O• Class PrintStream• Used to print to a file• Works just like System.out• Constructor takes a filenmame (technically a filePath)05-5: More on I/OCS112-2012S-05 I/O and ArrayList 2import java.io.File;import java.util.Scanner;import java.io.IOException;public static void main(String args[]) throws IOException{Scanner S = new Scanner(new File("test"));PrintStream ps = new PrintStream("testout");while (S.hasNextLine()){String next = S.nextLine();String upper = next.toUpperCase();ps.println(upper);}ps.close();S.close();}05-6: More on Strings• Lab3• Replace strings within a file• Can use replaceAll method of string• Could replace substrings you don’t want to replace: cat in scat• replaceAll is acceptable, even with this bug• For a slightly more robust version, use split method of string (need to do some work on your own)05-7: ArrayLists• Arraylists are similar to python lists• Class, with data and methods• Many methods are similar to python list methods• Unlike python, need to declare type of elements in the list• Can only store class types (no built-in types – no int, bool, etc)05-8: ArrayLists• ArrayList declaration syntax is a little odd• ArrayList<TypeName>ArrayList<String> myList = new ArrayList<String>()05-9: ArrayLists• ArrayList Methods:• add(E element): Add element to end of list• add(E element, int index): Add element at location ’index’ (shifting elements to the right)• get(int index): Get element at location ’index’• set(int index, E element): Set element at location ’index’ to be ’element’• remove(int index): Remove the element at location ’index’ (shifting elements to left)• size(): Return number of elements in the list• Fore more, google “ArrayList java” to get oracle docs (example in class)05-10: ArrayListsCS112-2012S-05 I/O and ArrayList 3ArrayList<String> myList = new ArrayList<String>();myList.add("Cat");myList.add("Dog");myList.add("Mouse");for (int i = 0; i < myList.size(); i++){System.out.println(myList.get(i));}05-11: ArrayLists• Write a method that takes as an input parameter an unsorted ArrayList of strings and returns the largest (last inlexigraphic order) stringString findLargest(ArrayList<String> list){// Fill me in!}05-12: ArrayLists• Write a method that takes as an input parameter an unsorted ArrayList of strings and returns the largest (last inlexigraphic order) stringString findLargest(ArrayList<String> list){if (list.size() == 0){return "";}String largest = list.get(0);for (int i = 1; i < list.size(); i++){if (largest.compareTo(list.get(i)) < 0){largest = list.get(i);}}return largest;}05-13: ArrayLists• Write a method that takes as an input parameter a sorted ArrayList of strings and a string to insert, and insertsthe new string into the ArrayList in ordervoid insertIntoList(ArrayList<String> list, String elem){// Fill me in!}05-14: ArrayLists• Write a method that takes as an input parameter a sorted ArrayList of strings and a string to insert, and insertsthe new string into the ArrayList in ordervoid insertIntoList(ArrayList<String> list, String elem){int index = 0;while(index < list.size() && list.get(index).compareTo(elem) < 0){index++;}list.add(index, elem);}05-15: ArrayLists• In the above method, what happens to duplicates?• Next lab, handle duplicates in a different wayCS112-2012S-05 I/O and ArrayList 405-16: Wrapper Classes• There are a number of “Collection classes, ” Like the ArrayList class, that can only store other classes as datamembers• What if we wanted to store ints, or floats in one of these collections?• What could we do?05-17: Wrapper Classes• Create a class that just stores a single int• Integer class• Constructor takes a single int• intValue() method used to retrieve value• immutable (like Strings!)05-18: IntegerArrayList<Integer> intList = new ArrayList<Integer>();for (int i = 0; i < 10; i++){intList.add(new Integer(i*3));}for (int i = 0; i < 10; i++){System.out.println(intList.get(i).intValue());}05-19: Autoboxing• The following could seems like it shouldn’t work• intList.add takes an Integer as an input parameter, not an intArrayList<Integer> intList = new ArrayList<Integer>();for (int i = 0; i < 10; i++){intList.add(i*3);}for (int i = 0; i < 10; i++){System.out.println(intList.get(i));}05-20: Autoboxing• To make life easier, if a method takes a parameter an Integer, and you pass it an int, then it is automatically“boxed” into an Integer• The code “new Integer( ... )” is implicitly added• If a method takes as a parameter an int, and you pass it an Integer, then it is automatically “unboxed” into an int• The code “.intValue()” is addedx05-21: AutoboxingInteger myint = new Integer(5);int builtinInt = myint + 4;myint = builtinInt + 5;CS112-2012S-05 I/O and ArrayList 5• Equivalent to:Integer myint = new Integer(5);int builtinInt = myint.intValue() + 4;myint = new Integer(builtinInt + 5);05-22: Autoboxing• Normally, you can just treat an Integer like an int• Autoboxing handles conversion for you• There are some cases where this does cause a problemInteger i1 = new Integer(5);Integer i2 = new Integer(7);Integer i3 =


View Full Document

USF CS 112 - ArrayList

Documents in this Course
Structs

Structs

4 pages

Trees

Trees

25 pages

Strings

Strings

27 pages

Queues

Queues

3 pages

Trees

Trees

24 pages

Arrays

Arrays

5 pages

ArrayList

ArrayList

24 pages

Stacks

Stacks

2 pages

Stacks

Stacks

8 pages

Trees

Trees

24 pages

Stacks

Stacks

8 pages

Queues

Queues

16 pages

Queues

Queues

17 pages

Queues

Queues

17 pages

Load more
Download ArrayList
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view ArrayList and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view ArrayList 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?