转载:

一.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元可借