转载:
一.List包的引入
import java.util.List;
import java.util.ArrayList;
注:如果用提示(灯泡)引入的包,一定要注意是util中的,有可能错误的自动引入了java.awt.List,那么在初始化的时候会显示错误。如:List<Book> Books=new ArrayList<Book>(); 会提示你 "类型List不带有参数",一定要注意这个小细节。
二.图书馆实例:
创建一个图书馆类,实现显示所有图书,添加图书和查找图书,并且可以由读者借书,使其改变图书的借还状态。
1.创建Book类
[java]
1. public class Book {
2. private String Author;//作者
3. public Boolean IsBorrowed;//借还状态
4. private String Name;//书名
5. private Double Price;//价格
6. //无参构造函数
7. public Book(String name,String author,double price)
8. {
9. Name=name;
10. Author=author;
11. Price=price;
12. false;
13. }
14. public String getNmae()
15. {
16. return Name;
17. }
18.
19. public String getAuthor() {
20. return Author;
21. }
22.
23. public Boolean getIsBorrowed() {
24. return IsBorrowed;
25. }
26.
27. public String getName() {
28. return Name;
29. }
30.
31. public Double getPrice() {
32. return Price;
33. }
34.
35. public void setAuthor(String Author) {
36. this.Author = Author;
37. }
38.
39. public void setIsBorrowed(Boolean IsBorrowed) {
40. this.IsBorrowed = IsBorrowed;
41. }
42.
43. public void setName(String Name) {
44. this.Name = Name;
45. }
46.
47. public void setPrice(Double Price) {
48. this.Price = Price;
49. }
50.
51. public String toString(){
52. return Name+","+Author+","+Price+"元"+(IsBorrowed?"未还":"可借");
53. }
54.
55. }
2.创建图书馆类
[java]
1. import java.util.List;
2. import java.util.ArrayList;
3.
4.
5. public class Library {
6. List<Book> Books;
7. public Library(){
8. new ArrayList<Book>();
9. }
10. public void insertBook(Book book)//插入图书的方法
11. {
12. Books.add(book);
13. }
14. public Book[] findBook(String BookName){//查找图书的方法
15. new ArrayList<Book>();
16. for(Book book:Books){
17. if(book.getNmae().compareTo(BookName)==0)
18. {
19. rtn.add(book);
20. }
21. }
22. new Book[rtn.size()];
23. rtn.toArray(rtnBook);
24. return rtnBook;//返回的是一个数组
25. }
26. public Book[] GetAllBooks(){//获取所有的图书信息
27. new Book[Books.size()];
28. //这里使用数组储存相关图书信息
29. return rtnBook;
30. }
31. }
3.创建读者类
[java]
1. public class Reader {
2. private String Name;
3. public Reader(String name)
4. {
5. Name=name;
6. }
7. public void BorrowBook(Book book)
8. {
9. true;//修改图书的借还状态
10. }
11. public void ReturnBook(Book book)
12. {
13. false;
14. }
15. }
4.主函数
[java]
1. import java.util.Iterator;//引入迭代器的包
2.
3. public class Main {
4.
5. public static void main(String[] s) {
6. new Book("格林童话","王五",16.0);
7. new Book("吸血鬼日记","张三",28.6);
8. new Book("三体","李四",39.8);
9. new Book("格林童话","小六",42.5);//在这里创建了四本图书
10. new Library();//初始化一个图书馆
11. libraray.insertBook(a);
12. //这里可以用自己写的方法添加图书
13. libraray.Books.add(c);
14. //也可以调用add()的方法添加函数
15. "获取所有图书:");
16. Book[] result1=libraray.GetAllBooks();
17. for(Book res:result1)//这里使用了for each语句遍历图书
18. System.out.println(res);
19. System.out.println();
20. "查找指定图书:");
21. "格林童话");//创建一个数组获取返回的数组
22. for(Book res:result2)
23. System.out.println(res);
24. System.out.println();
25. new Reader("小明");//创建一个读者"小明"。
26. //借"格林童话"图书
27. "小明借书完成后,获取所有图书:");
28. Book[] result3=libraray.GetAllBooks();
29. for(Book res:result3)
30. System.out.println(res);
31. System.out.println();
32. for(Book res:libraray.Books)//修改三体图书的属性
33. if(res.getName().compareTo("三体")==0)//使用了compareTo()方法进行比较.
34. "三体(第二版)");
35. "修改三体图书的属性,显示修改后的数据:");
36. //这里使用了迭代器进行遍历
37. while(iter.hasNext())//用hasNext()函数判空
38. System.out.println(iter.next()); }}
注:对于Iterator迭代器,迭代器创建后,如果修改了list,那么需要重新创建一个新的迭代器,否则会抛出java.util.ConcurrentModificationException异常。
5.运行结果
run:
获取所有图书:
格林童话,王五,16.0元可借
吸血鬼日记,张三,28.6元可借
三体,李四,39.8元可借
格林童话,小六,42.5元可借
查找指定图书:
格林童话,王五,16.0元可借
格林童话,小六,42.5元可借
小明借书完成后,获取所有图书:
格林童话,王五,16.0元未还
吸血鬼日记,张三,28.6元可借
三体,李四,39.8元可借
格林童话,小六,42.5元可借
修改三体图书的属性,显示修改后的数据:
格林童话,王五,16.0元未还
吸血鬼日记,张三,28.6元可借
三体(第二版),李四,39.8元可借
格林童话,小六,42.5元可借