gpt4 book ai didi

java - 如何从数组中查找项目并将其添加到列表中 (Java)

转载 作者:行者123 更新时间:2023-11-30 05:39:19 25 4
gpt4 key购买 nike

我有三个简单的类,我想从列表中读取以了解有多少本书以及正在使用多少本书。然后返回当前未使用的所有有声读物的列表。

书:

public class Book {
public String name;
private String owner;
public boolean isUsed;
}

有声读物:

public class AudioBook extends Book {
private int totalQTY;
public int neededQTY;
}

还有第三个类来管理它们:

public class Manage{
List<AudioBook> myAudioBooks;
Stack<Book> shelf;
int shelfSize = 20;
}

我的第一个问题是,如何检查每个项目有多少个以及正在使用多少个?第二个问题是,如何在 myList 中添加未使用的项目?我试过这个:

public List<Book> findNotUsedBooks(){

//get totalQTY of each book and add them to a list
for(int i = 0; i < myAudioBooks.size(); i++){
List<Integer> myList = myAudioBooks.get(i).getQTY();
}

List<Book> myList = new ArrayList<Book>();
for(AudioBook a : myAudioBooks){

//this wouldn't work because getQTY() returns an int
myList.add(a.getQTY());
}
return myList;
}

抱歉,如果问题不够清楚,我对 Java 编程很陌生。

最佳答案

您提出了 2 个不同的问题,需要 2 个不同的解决方案:

问题1:我的第一个问题是,如何检查每个项目有多少个以及正在使用多少个?

A1:--- 使用经典的每个循环进行迭代 ---

public Integer findQTYofUsedBooks(){  // although I would suggest to go for a Long
Integer qty = 0;
for( Book book: myAudioBooks ) { // forEach loop in java
if(book.isUsed()) {
qty += book.getQTY();
}
}
return qty;
}

A2:当您获得更高级的知识后,您会发现一些强大的 API,例如流,这使得解决方案变得更加简单:

--- 使用流进行迭代 ---

    public Integer findQTYofUsedBooks(){  
return myAudioBooks.stream() // iterate
.filter(book -> book.isUsed()) // keep only used books
.mapToInt(book -> book.getQTY()) // get QTY
.sum(); // sum the QTY
}

问题2:如何在myList中添加未使用的项目?

A1:

public List<Book> findNotUsedBooks(){

List<Book> notUsedBooks = new ArrayList<>();

for( Book book: myAudioBooks ) { // same trick as before just this time we add to a list of books
if( !book.isUsed()) {
notUsedBooks.add(book);
}
}

return notUsedBooks;
}

A2:(带流)

public List<Book> findNotUsedBooks(){
return myAudioBooks.stream()
.filter( book -> !book.isUsed())
.collect(Collectors.toList())
}

关于java - 如何从数组中查找项目并将其添加到列表中 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55994205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com