HashMap的常用方法
map的存储和修改方式 map.put(key, value)
map是否包含某个元素map.containsKey(key)
map某个key的value值map.get(key)
参考代码
import java.util.HashMappublic class BookTest {
static HashMap<String, Integer> map=new HashMap<String, Integer>()
static{//初始化图书信息
map.put("三国志", 8)
map.put("红楼梦", 0)
map.put("西游记", 15)
}
public static void main(String[] args) {//main方法
jieShu("水浒")
jieShu("三国志")
huanShu("三国志")
jieShu("红楼梦")
huanShu("红楼梦")
jieShu("红楼梦")
}
public static void jieShu(String name){//借书
if(!map.containsKey(name)){//查询图书馆是否有这本书
System.out.println("书籍:"+name+"\t查无此书!")
return
}
if(map.get(name)<=0){//查询图书数量是否为0
System.out.println("书籍:"+name+"\t已全部借出,请明日在来")
return
}
map.put(name, map.get(name)-1)
System.out.println("书籍:"+name+"\t借书成功。"+"\t库存:"+map.get(name))
}
public static void huanShu(String name){//还书
if(!map.containsKey(name)){
System.out.println("查无此书")
}else{
map.put(name, map.get(name)+1)
System.out.println("书籍:"+name+"\t还书成功。"+"\t库存:"+map.get(name))
}
}
}
测试输出
书籍:水浒 查无此书!书籍:三国志 借书成功。 库存:7
书籍:三国志 还书成功。 库存:8
书籍:红楼梦 已全部借出,请明日在来
书籍:红楼梦 还书成功。 库存:1
书籍:红楼梦 借书成功。 库存:0
额,你问题太抽象了,不知道你想问什么。如果你是想让程序控制的话可以试试下面两种方式:
1、在读者借书信息中创建一个长度为5的字符串数组,在每次借书前判断数组中空串的个数如果没有空串,说明已经借了5本了,拒绝操作。
2、如果上面的条件通过了,每次借书的时候将数组中空串改为书名。
不过上面那个方法貌似不是面向对象的,更改如下:
创建一个借书类:
public class BorrowBooks{
private String[] books
private int top
public BorrowBooks(){
books = new String[5]{"","","","",""}
top = 0
}
public borrow(String bookName){
if(top==5){
System.out.println(已经达到借书上限)
return
}else{
books[top] = bookName
top++
}
}
public return(String name){
String[] newBooks = new String[5]
for(int i=0,j=0i<topi++){
if(books[i].equals(name)){
books[i] = ""
top--
}
if(books[i]!=""){
newBooks[j]=books[i]
j++
}
}
books = newBooks
}
}
当你要借书的时候就得到这个读者的借书对象,然后通过这个类来进行borrow和return操作。
正在看的两本:1.Introduction to Java Programming
by Y.Daniel Liang
中译本叫着《java编程原理与实践》,译者是马海军、 景丽 清华大学出版社
2.Data Abstraction and Problem Solving With Java
by Frank M.Carrano &Janet J.Prichard
中译本叫《数据抽象和问题求解--java语言描述》, 译者是韩志宏 清华大学出版社