首页 > 编程 > Java > 正文

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

2019-11-09 19:10:43
字体:
来源:转载
供稿:网友
一.对于包的引入:

import java.util.List;import java.util.ArrayList;

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

二.图书馆实例:

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

1.创建Book类

public class Book {    PRivate String Author;//作者    public Boolean IsBorrowed;//借还状态    private String Name;//书名    private Double Price;//价格    Book(){}//无参构造函数    public Book(String name,String author,double price)    {        Name=name;        Author=author;        Price=price;        IsBorrowed=false;    }    public String getNmae()    {        return Name;    }    public String getAuthor() {        return Author;    }    public Boolean getIsBorrowed() {        return IsBorrowed;    }    public String getName() {        return Name;    }    public Double getPrice() {        return Price;    }    public void setAuthor(String Author) {        this.Author = Author;    }    public void setIsBorrowed(Boolean IsBorrowed) {        this.IsBorrowed = IsBorrowed;    }    public void setName(String Name) {        this.Name = Name;    }    public void setPrice(Double Price) {        this.Price = Price;    }        public String toString(){        return Name+","+Author+","+Price+"元"+(IsBorrowed?"未还":"可借");    }    }2.创建图书馆类
import java.util.List;import java.util.ArrayList;public class Library {    List<Book> Books;    public Library(){    Books=new ArrayList<Book>();            }    public void insertBook(Book book)//插入图书的方法    {        Books.add(book);    }    public Book[] findBook(String BookName){//查找图书的方法        ArrayList<Book> rtn=new ArrayList<Book>();        for(Book book:Books){            if(book.getNmae().compareTo(BookName)==0)             {            rtn.add(book);             }        }        Book[] rtnBook=new Book[rtn.size()];        rtn.toArray(rtnBook);        return rtnBook;//返回的是一个数组    }    public Book[] GetAllBooks(){//获取所有的图书信息    Book[] rtnBook=new Book[Books.size()];    Books.toArray(rtnBook);//这里使用数组储存相关图书信息    return rtnBook;    }}3.创建读者类

public class Reader {    private String Name;    public Reader(String name)    {        Name=name;    }    public void BorrowBook(Book book)    {        book.IsBorrowed=true;//修改图书的借还状态    }    public void ReturnBook(Book book)    {        book.IsBorrowed=false;    }}4.主函数

import java.util.Iterator;//引入迭代器的包public class Main {    public static void main(String[] s) {      Book a=new Book("格林童话","王五",16.0);      Book b=new Book("吸血鬼日记","张三",28.6);      Book c=new Book("三体","李四",39.8);      Book d=new Book("格林童话","小六",42.5);//在这里创建了四本图书      Library libraray=new Library();//初始化一个图书馆      libraray.insertBook(a);      libraray.insertBook(b);//这里可以用自己写的方法添加图书      libraray.Books.add(c);      libraray.Books.add(d);//也可以调用add()的方法添加函数      System.out.println("获取所有图书:");      Book[] result1=libraray.GetAllBooks();       for(Book res:result1)//这里使用了for each语句遍历图书          System.out.println(res);       System.out.println();      System.out.println("查找指定图书:");      Book[] result2=libraray.findBook("格林童话");//创建一个数组获取返回的数组       for(Book res:result2)          System.out.println(res);       System.out.println();      Reader xxx=new Reader("小明");//创建一个读者"小明"。      xxx.BorrowBook(a);//借"格林童话"图书      System.out.println("小明借书完成后,获取所有图书:");      Book[] result3=libraray.GetAllBooks();       for(Book res:result3)          System.out.println(res);       System.out.println();       for(Book res:libraray.Books)//修改三体图书的属性
       if(res.getName().compareTo("三体")==0)//使用了compareTo()方法进行比较.               res.setName("三体(第二版)"); System.out.println("修改三体图书的属性,显示修改后的数据:"); Iterator iter= libraray.Books.iterator();//这里使用了迭代器进行遍历 while(iter.hasNext())//用hasNext()函数判空 System.out.println(iter.next()); }}

结果:

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

注:在使用迭代器迭代时:

Iterator iter= libraray.Books.iterator();这是正确语法,并没有在等号后面加一个new,加了之后会报错,并且在迭代器创建之后,如果List被修改,那么这个迭代器需要重新创建,不然也会出现异常,程序会报错。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表