记事本
- 能存储记录
- 不限制能存储的记录属两个(任意存储)
- 能知道已经存储的记录的数量
- 能查看存进去的每一条记录
- 能删除一条记录
- 能列出所有的记录
接口设计
人机交互:输入输出的部分
业务逻辑:计算机计算的部分
界面(UI)和业务逻辑要分离
记事本应该实现业务逻辑
- add(String note);
- getSize();
- getNote(int index);
- removeNote(int index);
- list();
定义接口
package notebook;
public class NoteBook {
//先来定义接口
public void add(String s){
}
public int getSize(){
//先把接口定义出来,没有返回语句,就有错误提示
return 0;
}
public String getNote(int index){//返回某一条NoteyongString
return "";
}
public boolean removeNote(int index){
return true;//boolean到底有没有删除成功?
}
//第一种设计list()
public void list(){//列出所有的东西
System.out.println();
}
//第二种设计返回一个string[]数组
public String[] list(){
}
public static int main(String[] args) {
// TODO Auto-generated method stub
}
}
范型容器类
ArrayList<String>类
称作Arraylist of String,用来存放string 的Arraylist,这种类型叫做范型类,这种类了是一种容器
容器类
- ArrayList<String> notes=new ArrayList<String>();
- 容器类有俩个类型
- 容器的类型
- 元素的类型
package notebook;
import java.util.ArrayList;
public class NoteBook {
//需要定义一个成员变量
private ArrayList<String> notes=new ArrayList<String>();//ArrayList<>类,notes是一个对象管理者
//private int size=0;
//先来定义接口
public void add(String s){
//要存放很多东西可以使用是数组但是要无限制
//要无限制的存放,应该使用容器
notes.add(s);
//size++;//add一次SIze加一次
//notes.add(10);只能接受String不能接受int
}
public int getSize(){//存放了多少个
//先把接口定义出来,没有返回语句,就有错误提示
//return size();
return notes.size();//arraylist中有size这个函数,他知道我们存放了多少个函数
}
public String getNote(int index){//返回某一条NoteyongString
return "";
}
public boolean removeNote(int index){
return true;//boolean到底有没有删除成功?
}
//第一种设计list()
//public void list(){//列出所有的东西
// System.out.println();
//}
//第二种设计返回一个string[]数组
public String[] list(){
return new String[10];
}
public static void main(String[] args) {
String[]a=new String[2];
a[0]="first";
a[1]="second";
NoteBook nb=new NoteBook();//创建一个对象
nb.add("first");
nb.add("second");
System.out.println(nb.getSize());
}
}
ARRAYLIST 的操作1
ARRAYLIST是有顺序的
下标也是从0开始的,可以帮助我们获取其中一个元素
package notebook;
import java.util.ArrayList;
public class NoteBook {
//需要定义一个成员变量
private ArrayList<String> notes=new ArrayList<String>();//ArrayList<>类,notes是一个对象管理者
//private int size=0;
//先来定义接口
public void add(String s){
//要存放很多东西可以使用是数组但是要无限制
//要无限制的存放,应该使用容器
notes.add(s);
//size++;//add一次SIze加一次
//notes.add(10);只能接受String不能接受int
}
//上述add只是将一个东西加到后面,下面的接口可以将一些东西加载前面
public void add(String s,int location){
notes.add(location,s);
}
public int getSize(){//存放了多少个
//先把接口定义出来,没有返回语句,就有错误提示
//return size();
return notes.size();//arraylist中有size这个函数,他知道我们存放了多少个函数
}
public String getNote(int index){//返回某一条NoteyongString
return notes.get(index);
}
public void removeNote(int index){//Boolean是没有意义的
notes.remove(index);//boolean到底有没有删除成功?
}
//第一种设计list()
//public void list(){//列出所有的东西
// System.out.println();
//}
//第二种设计返回一个string[]数组
public String[] list(){
//构造有个数组
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) {
NoteBook nb=new NoteBook();//创建一个对象
nb.add("first");
nb.add("second");
nb.add("third",1);//把它放在1 的前面
System.out.println(nb.getSize());//2
System.out.println(nb.getNote(0));//fist
System.out.println(nb.getNote(1));//third
//System.out.println(nb.getSize(10));出错下标会越界
nb.removeNote(1);//将third移走
String[]a=nb.list();
for(String s:a){
System.out.println(s);
}
}
}
输出结果是:
3
first
third
first
second
ARRAYLIST操作2
String []a=new String [10];
String组成10个管理者
- 对象数组中的每一个元素都是对象的管理者而非对象本身
- 即创建数组的时候,他的对象还不存在,需要在创建
for-each
对于对象数组不一样的
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<>类,notes是一个对象管理者
//private int size=0;
//先来定义接口
public void add(String s){
//要存放很多东西可以使用是数组但是要无限制
//要无限制的存放,应该使用容器
notes.add(s);
//size++;//add一次SIze加一次
//notes.add(10);只能接受String不能接受int
}
//上述add只是将一个东西加到后面,下面的接口可以将一些东西加载前面
public void add(String s,int location){
notes.add(location,s);
}
public int getSize(){//存放了多少个
//先把接口定义出来,没有返回语句,就有错误提示
//return size();
return notes.size();//arraylist中有size这个函数,他知道我们存放了多少个函数
}
public String getNote(int index){//返回某一条NoteyongString
return notes.get(index);
}
public void removeNote(int index){//Boolean是没有意义的
notes.remove(index);//boolean到底有没有删除成功?
}
//第一种设计list()
//public void list(){//列出所有的东西
// System.out.println();
//}
//第二种设计返回一个string[]数组
public String[] list(){
//构造有个数组
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[] a=new Value[10];
for(int i=0;i<a.length;i++){
a[i]=new Value();
a[i].set(i);
}
for(Value v:a){
System.out.println(v.get());
v.set(0);
}
for(Value v:a){
System.out.println(v.get());
}
// NoteBook nb=new NoteBook();//创建一个对象
// nb.add("first");
// nb.add("second");
// nb.add("third",1);//把它放在1 的前面
// System.out.println(nb.getSize());//2
// System.out.println(nb.getNote(0));//fist
// System.out.println(nb.getNote(1));//third
// //System.out.println(nb.getSize(10));出错下标会越界
// nb.removeNote(1);//将third移走
// String[]a=nb.list();
// for(String s:a){
// System.out.println(s);
// }
}
}
- 输出结果
0
1
2
3
4
5
6
7
8
9
0
0
0
0
0
0
0
0
0
0
for-each 对象数组是能拿到管理者的
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<>类,notes是一个对象管理者
//private int size=0;
//先来定义接口
public void add(String s){
//要存放很多东西可以使用是数组但是要无限制
//要无限制的存放,应该使用容器
notes.add(s);
//size++;//add一次SIze加一次
//notes.add(10);只能接受String不能接受int
}
//上述add只是将一个东西加到后面,下面的接口可以将一些东西加载前面
public void add(String s,int location){
notes.add(location,s);
}
public int getSize(){//存放了多少个
//先把接口定义出来,没有返回语句,就有错误提示
//return size();
return notes.size();//arraylist中有size这个函数,他知道我们存放了多少个函数
}
public String getNote(int index){//返回某一条NoteyongString
return notes.get(index);
}
public void removeNote(int index){//Boolean是没有意义的
notes.remove(index);//boolean到底有没有删除成功?
}
//第一种设计list()
//public void list(){//列出所有的东西
// System.out.println();
//}
//第二种设计返回一个string[]数组
public String[] list(){
//构造有个数组
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) {
ArrayList<String>a=new ArrayList<String>();
a.add("first");
a.add("second");
for(String s:a){
System.out.println(s);
}
// Value[] a=new Value[10];
// for(int i=0;i<a.length;i++){
// a[i]=new Value();
// a[i].set(i);
// }
// for(Value v:a){
// System.out.println(v.get());
// v.set(0);
// }
// for(Value v:a){
// System.out.println(v.get());
// }
// NoteBook nb=new NoteBook();//创建一个对象
// nb.add("first");
// nb.add("second");
// nb.add("third",1);//把它放在1 的前面
// System.out.println(nb.getSize());//2
// System.out.println(nb.getNote(0));//fist
// System.out.println(nb.getNote(1));//third
// //System.out.println(nb.getSize(10));出错下标会越界
// nb.removeNote(1);//将third移走
// String[]a=nb.list();
// for(String s:a){
// System.out.println(s);
// }
}
}
输出结果是:
first
second
所以说明容器;类for-each循环也可以用
集合SET
不重复的元素
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 class NoteBook {
//需要定义一个成员变量
private ArrayList<String> notes=new ArrayList<String>();//ArrayList<>类,notes是一个对象管理者
//private int size=0;
//先来定义接口
public void add(String s){
//要存放很多东西可以使用是数组但是要无限制
//要无限制的存放,应该使用容器
notes.add(s);
//size++;//add一次SIze加一次
//notes.add(10);只能接受String不能接受int
}
//上述add只是将一个东西加到后面,下面的接口可以将一些东西加载前面
public void add(String s,int location){
notes.add(location,s);
}
public int getSize(){//存放了多少个
//先把接口定义出来,没有返回语句,就有错误提示
//return size();
return notes.size();//arraylist中有size这个函数,他知道我们存放了多少个函数
}
public String getNote(int index){//返回某一条NoteyongString
return notes.get(index);
}
public void removeNote(int index){//Boolean是没有意义的
notes.remove(index);//boolean到底有没有删除成功?
}
//第一种设计list()
//public void list(){//列出所有的东西
// System.out.println();
//}
//第二种设计返回一个string[]数组
public String[] list(){
//构造有个数组
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) {
ArrayList<String>a=new ArrayList<String>();
a.add("first");
a.add("second");
a.add("first");
for(String s:a){
System.out.println(s);
}
System.out.println("------------------");
HashSet<String> s=new HashSet<String>();
s.add("first");
s.add("second");
s.add("first");
// for(String k:a){
// System.out.println(k);
// }
System.out.println(s);
// Value[] a=new Value[10];
// for(int i=0;i<a.length;i++){
// a[i]=new Value();
// a[i].set(i);
// }
// for(Value v:a){
// System.out.println(v.get());
// v.set(0);
// }
// for(Value v:a){
// System.out.println(v.get());
// }
// NoteBook nb=new NoteBook();//创建一个对象
// nb.add("first");
// nb.add("second");
// nb.add("third",1);//把它放在1 的前面
// System.out.println(nb.getSize());//2
// System.out.println(nb.getNote(0));//fist
// System.out.println(nb.getNote(1));//third
// //System.out.println(nb.getSize(10));出错下标会越界
// nb.removeNote(1);//将third移走
// String[]a=nb.list();
// for(String s:a){
// System.out.println(s);
// }
}
}
输出结果:
first
second
first
[second, first]
HASH表
查找金钱名称的
1.定义接口
键是一定唯一的
留下的知识最后一次的
package coins;
import java.util.HashMap;
import java.util.Scanner;
public class Coin {
//Hash表,由一对数表示而成,key键值
private HashMap<Integer,String>coinnames=new HashMap<Integer,String>();
//初始化需要构造器
public Coin(){
coinnames.put(1,"penney");//coiinnames.put(key,value);
coinnames.put(10,"dime");
coinnames.put(25,"quater");
coinnames.put(50,"half-dollar");
coinnames.put(50,"五毛");
System.out.println(coinnames.keySet().size());
System.out.println(coinnames);
//遍历Hash表
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);
}
}
输出结果是:
10
4
{50=五毛, 1=penney, 25=quater, 10=dime}
五毛
penney
quater
dime
dime
网友评论