Java语言复习

Class Inheritance & Interface Implements

  • class method - static methods (Math.man(); Math.sqry()....)
  • instance method - non-static methods

public static void main(String[] args) { }

Overrding vs Overloading

overriding: same name and same sigatures
overloading: same name but different signatures(parameters)

Static type vs Dynamic type

List a = new ArrayList() // Static type a = new Dynamic type ()
Dynamic method selection: java checks static type when calls method

  • Compiler plays it safe and only allows us to do things according to the static type.
  • For overridden methods (not overloaded methods), the actual method invoked is based
    on the dynamic type of the invoking expression (如果static type没有此方法, then compiletime error)
  • Can use casting to overrule compiler type checking.

Extends

Constructors Are Not Inherited: super()

interface vs astract class

interface:

  • All methods must be public.
  • All variables must be public static final.
  • Cannot be instantiated
  • All methods are by default abstract unless specified to be default
  • Can implement more than one interface per class

abstract class:

  • Methods can be public or private
  • Can have any types of variables
  • Cannot be instantiated
  • Methods are by default concrete unless specified to be abstract
  • Can only implement one per class

Lists: ordered collection of items

IntList

需要改进, 创建添加都很麻烦
为了后续 将IntList命名为 IntNode

public class IntNode{
    public int item;
    public IntNode next;

    public IntNode(int i, IntNode n){
        item= i;
        next= n;
    }
}

类LinkedList(SLList)

在list前面加一个sentinel 一个dummyhead通常会有利于对于special case, Null 的处理
大概逻辑如下:

public class SLList {
    public IntNode first;
    public int size;
    public SLList() {
        first = null;
        size = 0;
    }
    public SLList(int x) {
        first = new IntNode(x, null);
        size = 0;
    } /
    ** Adds an item to the front of the list. */
    public void addFirst(int x) {
        first = new IntNode(x, first);
        size += 1;
    }
}

Arrays

int x = new int[3];
y = new int[]{1,2,3,4};
int[] z = {1,2,3,4};
int[][] 2D = new int[4][];
arrays.length;

AList (Array based list)

resize array when size == items.length. resize(size * RFACTOR);

Java 标准list库

ArrayList

ArrayList<T> a = new ArrayList<>();
a.add(int index, E element); // a.add(E element); add to the end of the list
a.contains();
a.size();
a.get(index);
a.remove();
a.isEmpty();
a.indexof();
a.lastIndexof();
a.toArray();
a.sort(Comparator<> c)
a.clear();
a.set(index, element); //replace
a.clone(); shallow copy

LinkedList (和上面基本一致,可以getLast/addLast)

collection list用add get / Deque用offer/peek/poll

List<T> l = new LinkedList<>();
l.add();  // same for get 和remove: l.get(); l.getFirst(); l.getLast()
l.addFirst();
l.addLast();
l.toArray();

Set and Map

Set: unordered collection of strictly unique items

HashSet

Set<T> s = new HashSet<>();
s.add();
s.contains();
s.isempty();
s.remove();

TreeSet

还没用过

Map: collection of key/value pairs

HashMap

Map<K,V> map = new HashMap<>();
map.containsKey();
map.containsValue();
map.keySet();
map.value();
map.get();
map.getOrDefault();
map.put(K,V);
map.remove();
map.replace();

Comparable & Iterable

Comparable

import java.util.Comparator;
public class Dog implements Comparable<Dog> {
    ...
    public int compareTo(Dog uddaDog) {
        return this.size - uddaDog.size;
    } 
    private static class NameComparator implements Comparator<Dog> {
        public int compare(Dog a, Dog b) {
        return a.name.compareTo(b.name);
    }
} 
    public static Comparator<Dog> getNameComparator() {
        return new NameComparator();
    }
}

when use: Comparator<Dog> nc = Dog.getNameComparator(); retrieve the new created comparator

Iterable

如果要给class需要循环,需要 implements Iterable<T>

public interface Iterable<T>{
    Iterator<T> iterator();
}

public interface Iterator<T>{
    boolean hasNext();
    T next();
}
//举例
public class ArraySet<T> implements Iterable<T>{
    ...
    public Iterator<T> iterator() {
        return new ArraySetIterator();
    }
    private class ArraySetIterator implements Iterator<T> {
        private int wizPos;
        public ArraySetIterator() {
            wizPos = 0;
        } 
        public boolean hasNext() {
            return wizPos < size;
        } 
        public T next() {
            T returnItem = items[wizPos];
            wizPos += 1;
            return returnItem;
        }
    ...
    public static void main(String[] args) {
        ArraySet<Integer> aset = new ArraySet<>();
        aset.add(5);
        aset.add(23);
        //iteration
        for (int i : aset) {
            System.out.println(i);
        }
    }
}    
    

StringBuilder sb = new StringBuilder("a");
sb.append("b");
sb.toString;

throw/catch exception

package

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355