TOC
2.10. java ref¶
2.10.1. data structures¶
- LinkedList, ArrayList
- add(Element e), add(int idx, Element e), get(int idx)
- remove(int index)
- remove(Object o)
- Stack
- push(E item)
- peek()
- pop()
- PriorityQueue
- peek()
- poll()
- default is min-heap
- PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
- PriorityQueue(Collection<? extends E> c)
- HashSet, TreeSet
- add, remove
- HashMap
- put(K key, V value)
- get(Object key)
- keySet()
- if you try to get something that's not there, will return null
default init capacities all 10-20
clone() has to be cast from Object
2.10.2. useful¶
iterator
- it.next() - returns value
- it.hasNext() - returns boolean
- it.remove() - removes last returned value
strings
- String.split(" |\\.|\\?") //split on space, ., and ?
- StringBuilder
- much faster at concatenating strings
- thread safe, but slower
- StringBuilder s = new StringBuilder(CharSequence seq)();
- s.append("cs3v");
- s.charAt(int x), s.deleteCharAt(int x), substring
- s.reverse()
- Since String is immutable it can safely be shared between many threads
- formatting
String s = String.format("%d", 3);
"%05d" //pad to fill 5 spaces
"%8.3f" //max number of digits
"%-d" //left justify
"%,d" //print commas ex. 1,000,000
| int | double | string |
|-----|--------|--------|
| d | f | s |
new StringBuilder(s).reverse().toString()
int count = StringUtils.countMatches(s, something);
- integer
- String toString(int i, int base)
- int parseInt(String s, int base)
- array
char[] data = {'a', 'b', 'c'};
String str = new String(data);
sorting
- Arrays.sort(Array a)
- Collections.sort(Collection c), Collections.sort(Collection l, Comparator c)
- use mergeSort (with insertion sort if very small)
- Collections.reverseOrder() returns comparator opposite of default
class ComparatorTest implements Comparator<String>
public int compare(String one, String two) //if negative, one comes first
class Test implements Comparable<Object>
public int compareTo(Object two)
exceptions
ArrayIndexOutOfBoundsException
throw new Exception("Chandan type")
2.10.3. higher level¶
primitives -
byte, short, char, int, long, float, double
java only has primitive and reference types
when you assign primitives to each other, it’s fine
when you pass in a primitive, its value is copied
when you pass in an object, its reference is copied
you can modify the object through the reference, but can’t change the object’s address
garbage collection
once an object no longer referenced, gc removes it and reclaims memory
jvm intermittently runs a mark-and-sweep algorithm
runs when short-term stuff gets full
older stuff moves to different part
eventually older stuff is cleared
2.10.4. object-oriented¶
declare |
instantiate |
initialize |
---|---|---|
Robot k |
new |
Robot() |
class method = static
called with Foo.DoIt()
initialized before constructor
class shares one copy, can’t refer to non-static
instance method - invoked on specific instance of the class
called with f.DoIt()
protected member is accessible within its class and subclasses