使用ArrayList存储变量

我正在编写一个项目来存储一个对象数组,可能是在一个arraylist中。

所以,我的对象有数据元素,getter和setter。 我不知道如何访问对象的元素。

例如,我的对象是一本书,其中包含以下数据元素。

Book ->Author ->Price ->Date 

如果某本书的价格发生变化,我该如何更新arrayList? 我需要一个2d arrayList吗? 我认为indexOf不起作用,因为它是一个对象? 不太确定。

我只是编程的新手,所以我不确定arrayList是否是正确的数据结构。 非常感谢您阅读本文,我们将非常感谢您的帮助。

您可以通过它的索引访问ArrayList中的对象。 说你想要第三本书:

 List lisOfBooks = someFunctionWhichGetsListOfBooks(); Book book = listOfBooks.get(2); 

(记住java中的索引从0开始)然后你可以这样做:

 String Author = book.getAuthor(); 

或者设定价格:

 book.setPrice(newPrice); 

如果您不知道列表中的哪个特定书籍,您有两个选择:1)遍历列表直到找到您想要的书或2)您可以使用HashMap。 但是你需要决定把这本书的关键点(每本书的独特之处是什么?)。 假设您将按ID查找书籍。 然后,您可以将所有书籍放在由Integer id键入的HashMap中:

 HashMap bookHash = new HashMap(); for (Book book : listOfBooks) { bookHash.put(book.getId(), book); } 

然后检索你可以做的任何书:

 Book book = bookHash.get(bookId); 

显然,这假设您的Book类具有适当的getter和setter方法。 例如:

 public class Book { private int id; private String author; ... public String getAuthor() { return author; } public void setPrice(price) { this.price = price; } ... } 

如果需要将对象存储在列表中, ArrayList是一个很好的实现。 书籍集合的一个很好的替代方案: Map实现。 如果每本书都可以通过唯一键(名称,ISBN号等)识别,并且您使用该键从该集合中“获取”一本书,则此function非常有用。

书是其上的一个对象,应该用Book类建模。 因此,如果您想将书籍存储在列表结构中,这样就可以了:

 List books = new ArrayList(); books.add(new Book("Robert C. Martin","Clean Code")); books.add(new Book("Joshua Bloch","Effective Java")); 

对于地图,代码片段可能如下所示:

 Map books = new HashMap(); books.put("978-0132350884", new Book("Robert C. Martin","Clean Code")); books.put("978-0321356680", new Book("Joshua Bloch","Effective Java")); 

编辑 – 查找图书并更新价格

使用列表,您必须遍历列表,直到找到表示您正在查找的书的对象。 如果你总是可以使用ISBN,那么使用上面显示的地图会更容易。 使用列表,它是这样的:

 List books = getBooks(); // get the books from somewhere for (Book book:books) { if (matchesSearchCriteria(book)) { // some method to identify a book, placeholder! book.setPrice(newPrice); // modify the books price break; } } 

您需要创建一个自定义的“数据类型”,基本上是一个POJO(普通的旧Java对象),它将包含您想要的所有参数的字段。 我们称之为Book:

 class Book { public String author; public double price; public Date date; } 

当然,拥有私有字段并使用getter和setter封装更好,我jsut写道,为简单起见。

然后,您可以创建Book对象列表。

 List books = new ArrayList(); 

并添加书籍,然后你可以像这样迭代:

 for (Book book : books) { System.out.println(book.getAuthor()); } 

例如,我会查看某种查找数据结构,例如hashmap

 HashMap> books = new Hashmap>(); HashMap bookelements = new HashMap(); bookelements.put("Author","JK Rowling"); bookelements.put("Price","£5"); bookelements.put("Year","2000"); books.put("harry potter",bookelements); //Get elements like so String author = (String)books.get("harry potter").get("Author");