此程序中顯示了數據存儲結構能夠經過與簡單類型一樣的方法來處理類對象。java
注意的地方是:關鍵字是一個String類對象,所以作比較時須要使用equals()方法而不是==運算符。算法
class Person{ private String lastName; private String firstName; private int age; public Person(String last,String first,int a) { lastName = last; firstName = first; age = a; } public void displayPerson() { System.out.println(" Last name: " + lastName); System.out.println(" fisrt name: " + firstName); System.out.println(" age " + age); } public String getLast() { return lastName; } } class classDataArray { private Person[] a; private int nElems; public classDataArray(int max) { a = new Person[max]; nElems = 0; } public Person find(String searchName) { int j; for(j=0;j<nElems;j++) if(a[j].getLast().equals(searchName)) break; if(j == nElems) return null; else return a[j]; } public void insert(String last,String first,int age) { a[nElems] = new Person(last,first,age); nElems++; } public boolean delete(String searchName) { int j; for(j=0;j<nElems;j++) if(a[j].getLast().equals(searchName)) break; if(j==nElems) return false; else { for(int k=j;k<nElems;k++) a[k] = a[k+1]; nElems--; return true; } } public void display() { for(int j=0;j<nElems;j++) a[j].displayPerson(); } } class ClassDataApp{ public static void main(String[] args) { int maxSize = 100; classDataArray arr; arr = new classDataArray(maxSize); arr.insert("e", "patty", 24); arr.insert("s", "lorr", 37); arr.insert("yee", "tom", 46); arr.insert("adams", "henry", 63); arr.insert("hashinte", "sate", 21); arr.insert("stimson", "henry", 29); arr.insert("velasquez", "jose",72); arr.insert("lamrque", "henry", 54); arr.insert("vang", "winth",22); arr.insert("creswekk", "lus", 18); arr.display(); String searchkey = "e"; Person found; found = arr.find(searchkey); if(found != null) { System.out.println("found");; found.displayPerson(); } else System.out.println("no found" + searchkey); System.out.println("delete s,yee,adams"); arr.delete("s"); arr.delete("yee"); arr.delete("adams"); arr.display(); } }
Last name: e fisrt name: patty age 24 Last name: s fisrt name: lorr age 37 Last name: yee fisrt name: tom age 46 Last name: adams fisrt name: henry age 63 Last name: hashinte fisrt name: sate age 21 Last name: stimson fisrt name: henry age 29 Last name: velasquez fisrt name: jose age 72 Last name: lamrque fisrt name: henry age 54 Last name: vang fisrt name: winth age 22 Last name: creswekk fisrt name: lus age 18 found Last name: e fisrt name: patty age 24 delete s,yee,adams Last name: e fisrt name: patty age 24 Last name: hashinte fisrt name: sate age 21 Last name: stimson fisrt name: henry age 29 Last name: velasquez fisrt name: jose age 72 Last name: lamrque fisrt name: henry age 54 Last name: vang fisrt name: winth age 22 Last name: creswekk fisrt name: lus age 18
java中的數組是對象,由new操做符創造數組
無序數組能夠快速插入,可是查找和刪除比較慢設計
將數組封裝到類中能夠保護數組不被隨意更改code
類的接口又類用戶可訪問的方法組成對象
類接口的設計使類用戶的操做更簡單blog
有序數組能夠用二分法接口
線性查找須要的時間與數據成正比get
二分法查找須要的時間與數據的對數成正比hash
大O表示法爲比較算法的速度提供了方便方法
O(1)>O(logN)>O(N)>O(N^2)
算法由好到壞