我有三个简单的类,我想从一个列表中读取,看看有多少书,有多少书正在使用。然后返回当前未使用的所有AudioBooks的列表。
书:
public class Book {
public String name;
private String owner;
public boolean isUsed;
}AudioBook:
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编程非常陌生。
发布于 2019-05-06 01:49:43
您提出了两个不同的问题,需要两个不同的解决方案:
Q1:我的第一个问题是,我如何检查每个项目有多少项,有多少项正在使用?
A1:-使用经典的for each循环进行迭代
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:在你进入更高级的阶段之后,你会发现一些强大的应用编程接口,比如streams,这使得解决方案变得更加简单:
-使用流进行迭代
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
}
Q2:如何在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:(使用streams )
public List<Book> findNotUsedBooks(){
return myAudioBooks.stream()
.filter( book -> !book.isUsed())
.collect(Collectors.toList())
}
https://stackoverflow.com/questions/55994205
复制相似问题