Transcript NoteSet15x

CSE 1341 - Honors
Principles of Computer Science I
Mark Fontenot
[email protected]
Note Set 15
Note Set 19 Overview
 Intro to ArrayLists
 File and Streams
ArrayList
 One of Java’s Container Classes
 Containers hold other things
 Can hold unlimited number of object references of any type
(all need to be the same type – but remember about
inheritance)
ArrayList <String> list = new ArrayList<String>();
list.add(“Southern”);
list.add(“Methodist”);
list.add(“University”);
 No need to worry about running out of places (unless you
run out of memory)
Arraylist Useful Methods
 size() – returns the size of the arraylist
 get (int i) – returns the reference stored at the
specified position i
 remove( int i)– removes the object references stored
at position i and moves the ones after forward
ArrayList<String> v = new ArrayList<String>();
v.add(“one”);
v.add(“two”);
v.add(“three”);
for(int i = 0; i < v.size(); i++)
System.out.println(v.get());
Arraylists
 Can only hold object references
 Can’t do
ArrayList<int> v = new ArrayList<int> ();
ArrayList<Integer> l = new ArrayList<Integer>();
l.add(1);
-adding ints, not Integers
l.add(2);
-They are automatically converted to Integer
l.add(3);
ojbects
for (Integer x: l){
System.out.println(x * 2);
}
Automatically converted from
Integers to ints
Currently
 Data in an executing program
 Stored in RAM while program is in execution
 When program ends, data is no longer accessible
 RAM is volatile storage – must have powered to maintain state
(retain data)
Persistent Storage
 Non-volatile memory – doesn’t need power to maintain
state
 Data can survive a power cycle
 Examples
 hard-drive
 CDs
 USB drive (flash memory)
File processing
 Part of nearly all languages
 Stream – ordered data read or written
 abstraction in Java
 Two types of file processing in Java for us
 Text-based file i/o
 Binary File I/O - Object serialization (storing objects directly to
file)
 Object serialization/deserialzation
Data Hierarchy
 Lowest level – 1s & 0s - The bit
 “easy” to create computer hardware that only had to maintain
two states
 2 bits – 4 combinations
 00, 01, 10, 11
 3 bits – 8 combination
 000, 001, 010, 011, 100, 101, 110, 111
 4 bits – 16 combinations
 n bits – 2n combinations
 8 bits –> 1 byte
 Java uses 2 bytes to represent a character (16 bytes) –
Unicode character set
 Unicode contains characters from many of the worlds languages
Data Hierarchy
 Can group characters to make fields
 i.e. string of characters to make name
 Group of fields makes a record
 record is implemented as a class in java
 think about just the data stored in the data members of one
instance of an object
 Name, Id, Address, etc…
 Group of records can be stored in a file
 Employee file
 Customer file
 Inventory file
Java and Files
 Each file – sequential stream of bytes
 How that stream/sequence is interpreted is up to the
programmer who reads/writes the file
 How do we know when we’re done reading?
 OS provides some mechanism to know that the complete
contents of the file have been read (sentinel value)
 programmer knows exactly how many “things” to read from
the file
 2 Types of File I/O
 Character File I/O
 Writing text to files
 Binary File I/O
 Writing byte data or complete objects
Sample class
public class Account {
private String acctNum;
private String fName;
private double balance;
public Account (String num, String name, double bal) {
acctNum = num;
fName = name;
balance = bal;
}
//Assume Accessors and Mutators for each data member
}
Sample Output
import java.util.*;
import java.io.*;
public class FileOutput {
public static void main (String [] args) {
//Create an arraylist to store customers
ArrayList<Account> customers = new ArrayList<Account> ();
//create some sample customers and add to list
Account a = new Account ("123", "Sam", 123.34);
customers.add(a);
a = new Account("234", "Sue", 223.33);
customers.add(a);
a = new Account("144", "Mark", 322.22);
customers.add(a);
Sample Output
//open a file
Formatter output = null;
//must open the file in a try catch block
try {
output = new Formatter("data.txt");
} catch (IOException e) {
System.out.println("There is an error - exiting");
System.exit(1);
}
//write everything from list to output
for (Account x: customers)
output.format("%s %s %.2f\n",
x.getAcctNum(),
x.getFName(),
x.getBalance());
output.close();
}
}
This is text-based or character-based
file I/O.
Sample Read
import java.util.*;
import java.io.*;
public class FileInput {
public static void main (String [] args) {
//List to put the objects we're going to read from the file
ArrayList <Account> list = new ArrayList<Account> ();
//We'll use a scanner object to read from the file.
//Are there other ways? Of course...
Scanner s = null;
try {
s = new Scanner (new File ("data.txt"));
} catch (IOException e) {
System.out.println("Error opening file");
System.exit(1);
}
Sample Read
//Temp variables to store values read from file
String aNum, fName;
double bal;
while (s.hasNext()) {
aNum = s.next();
fName = s.next();
bal = s.nextDouble();
Account a = new Account(aNum, fName, bal);
list.add(a);
}
//print the customers out
for(Account x: list)
System.out.println(x);
}
}
could be replaced with:
Account a = new Account (s.next(), s.next(), s.nextDouble());