此程序中显示了数据存储结构能够经过与简单类型一样的方法来处理类对象。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)
算法由好到坏