java 用List存储对象操作(实例讲解)

来源:互联网 发布:淘宝新手卖家直通车 编辑:程序博客网 时间:2024/06/02 03:22

转载:http://blog.csdn.net/last_memory/article/details/54946940

一.List包的引入

import java.util.List;

import java.util.ArrayList;

注:如果用提示(灯泡)引入的包,一定要注意是util中的,有可能错误的自动引入了java.awt.List,那么在初始化的时候会显示错误。如:List<Book> Books=new ArrayList<Book>();  会提示你 "类型List不带有参数",一定要注意这个小细节。

二.图书馆实例:

创建一个图书馆类,实现显示所有图书,添加图书和查找图书,并且可以由读者借书,使其改变图书的借还状态。

1.创建Book类

[java] view plain copy
  1. public class Book {  
  2.     private String Author;//作者  
  3.     public Boolean IsBorrowed;//借还状态  
  4.     private String Name;//书名  
  5.     private Double Price;//价格  
  6.     Book(){}//无参构造函数  
  7.     public Book(String name,String author,double price)  
  8.     {  
  9.         Name=name;  
  10.         Author=author;  
  11.         Price=price;  
  12.         IsBorrowed=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] view plain copy
  1. import java.util.List;  
  2. import java.util.ArrayList;  
  3.   
  4.   
  5. public class Library {  
  6.     List<Book> Books;  
  7.     public Library(){  
  8.     Books=new ArrayList<Book>();  
  9.             }  
  10.     public void insertBook(Book book)//插入图书的方法  
  11.     {  
  12.         Books.add(book);  
  13.     }  
  14.     public Book[] findBook(String BookName){//查找图书的方法  
  15.         ArrayList<Book> rtn=new ArrayList<Book>();  
  16.         for(Book book:Books){  
  17.             if(book.getNmae().compareTo(BookName)==0)  
  18.              {  
  19.             rtn.add(book);  
  20.              }  
  21.         }  
  22.         Book[] rtnBook=new Book[rtn.size()];  
  23.         rtn.toArray(rtnBook);  
  24.         return rtnBook;//返回的是一个数组  
  25.     }  
  26.     public Book[] GetAllBooks(){//获取所有的图书信息  
  27.     Book[] rtnBook=new Book[Books.size()];  
  28.     Books.toArray(rtnBook);//这里使用数组储存相关图书信息  
  29.     return rtnBook;  
  30.     }  
  31. }  
3.创建读者类

[java] view plain copy
  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.         book.IsBorrowed=true;//修改图书的借还状态  
  10.     }  
  11.     public void ReturnBook(Book book)  
  12.     {  
  13.         book.IsBorrowed=false;  
  14.     }  
  15. }  

4.主函数

[java] view plain copy
  1. import java.util.Iterator;//引入迭代器的包  
  2.   
  3. public class Main {  
  4.   
  5.     public static void main(String[] s) {  
  6.       Book a=new Book("格林童话","王五",16.0);  
  7.       Book b=new Book("吸血鬼日记","张三",28.6);  
  8.       Book c=new Book("三体","李四",39.8);  
  9.       Book d=new Book("格林童话","小六",42.5);//在这里创建了四本图书  
  10.       Library libraray=new Library();//初始化一个图书馆  
  11.       libraray.insertBook(a);  
  12.       libraray.insertBook(b);//这里可以用自己写的方法添加图书  
  13.       libraray.Books.add(c);  
  14.       libraray.Books.add(d);//也可以调用add()的方法添加函数  
  15.       System.out.println("获取所有图书:");  
  16.       Book[] result1=libraray.GetAllBooks();  
  17.        for(Book res:result1)//这里使用了for each语句遍历图书  
  18.           System.out.println(res);  
  19.        System.out.println();  
  20.       System.out.println("查找指定图书:");  
  21.       Book[] result2=libraray.findBook("格林童话");//创建一个数组获取返回的数组  
  22.        for(Book res:result2)  
  23.           System.out.println(res);  
  24.        System.out.println();  
  25.       Reader xxx=new Reader("小明");//创建一个读者"小明"。  
  26.       xxx.BorrowBook(a);//借"格林童话"图书  
  27.       System.out.println("小明借书完成后,获取所有图书:");  
  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.                res.setName("三体(第二版)");  
  35.  System.out.println("修改三体图书的属性,显示修改后的数据:");  
  36.  Iterator iter= libraray.Books.iterator();//这里使用了迭代器进行遍历   
  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元可借