第七课,接口设计以及顺序容器:
package notebook;
import java.util.ArrayList;
class Value{
private int i;
public void set( int i ) { this.i = i; }
public int get() { return i; }
}
public class NoteBook {
private ArrayList<String> notes = new ArrayList<String>(); //范型类容器
//ArrayList可以为容器类型,String为容器里存储的数据类型
public void add(String s) {
notes.add(s); //ArrayList容器自带的函数功能,将数据存入容器中
}
public void add(String s, int location) {
notes.add(location, s);
}
public int getSize() {
return notes.size(); //ArrayList函数自带的功能,读取容器中的数据个数
}
public String getNote(int index) {
return notes.get(index);
}
public void removeNote(int index) {
notes.remove(index); //ArrayList容器所具有的remove函数自带有去除出错报错功能
}
// public void list() {
// System.out.println();
// }
//便于将输出的字符串数组进行其他用途
public String[] list() {
Value[] a = new Value[10]; //创建对象数组,每一个数组中都指向一个还未new的对象
for( int i=0; i<a.length; i++ ){
a[i] = new Value(); //这个步骤必不可少,必须要将每一个数组中的对象new出来
a[i].set(i);
}//对象数组的创建和初始化
String[] ia = new String[notes.size()];
for( int i=0; i<ia.length; i++){
ia[i] = ""+i;
}
//Java中有两种数组,一种是基础数组,一种是对象数组
//基础数组是类似于C语言中的数组指针,例如int[] a = new int[10];
//是指创建了一个存放十个元素的数组,由一个管理者a来管理这个数组,a是这个不知道位置的数组的的管理者而非所有者
//例如String[] a = new String[10];
//是指创建了一个可以存放十个指向不同的字符串,数组指针每一个元素都指向一个字符串
//String s也是这样,s是管理着一个字符串的管理者
// for( int i=0; i<notes.size(); i++) {//第一种方法
// a[i] = notes.get(i);
// }
//第二种方法
notes.toArray(a); //自动将数组a中的内容填充为notes的内容数据
return a;
}
public static void main(String[] args) {
NoteBook nb = new NoteBook();
nb.add("first");
nb.add("second");
nb.add("third", 1);
System.out.println(nb.getSize());
System.out.println(nb.getNote(0));
System.out.println(nb.getNote(1));
nb.removeNote(1);
String[] a = nb.list();
for(String s : a) { //这个为for-each循环,对于容器来说也是可以用的
//对于数组(容器)a里面的每一个String s(改括号中的书写格式仅用于遍历修改什么的,不可用于其他用途)
System.out.println(s);
}
}
}
第八课,容器:
package notebook;
import java.util.ArrayList;
import java.util.HashSet;
class Value {
private int i;
public void set(int i) { this.i = i; }
public int get() { return i;}
public String toString() {return ""+i; }//所有的类里面只要加上这一条语句就可以直接输出对象
}
public class NoteBook {
private ArrayList<String> notes = new ArrayList<String>();
public String[] list() {
int ia[] = new int[10];
String[] a = new String[notes.size()];
// for( int i=0; i<notes.size(); i++ ){
// a[i] = notes.get(i);
// }
notes.toArray(a);
return a;
}
public static void main(String[] args) {
Value b = new Value();
b.set(10);
b.get();
System.out.println(b);
ArrayList<String> a = new ArrayList<String>();
a.add("first");
a.add("second");
a.add("first");
System.out.println(a);
System.out.println("----------------");
HashSet<String> s = new HashSet<String>();
s.add("first");
s.add("second");
s.add("first");
System.out.println(s);
}
}
第九课,Hash表:
package coins;
import java.util.HashMap;
import java.util.Scanner;
public class Coin {
private HashMap<Integer, String> coinnames = new HashMap<Integer, String>();
public Coin() {
coinnames.put(1, "penny");
coinnames.put(10, "dime");
coinnames.put(25, "quarter");
coinnames.put(50, "half-dollar"); //两个50同时存在,只会存在最后一次输入的“五毛”
coinnames.put(50, "五毛");
System.out.println(coinnames.keySet().size());
//keySet是将哈希表中的所有关键字(key)打包成一个集合,在用size获取具体的个数
System.out.println(coinnames);
//哈希表的遍历
for( Integer k : coinnames.keySet()) {
String s = coinnames.get(k);
System.out.println(s);
}
}
public String getName( int amount ) {
if( coinnames.containsKey(amount) ){
return coinnames.get(amount);
}else {
return "Not Found!";
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int amount = in.nextInt();
Coin coin = new Coin();
String name = coin.getName(amount);
System.out.println(name);
// coin.getName(amount);
// System.out.println(coin.getName(amount));
}
}