gpt4 book ai didi

java - 全局变量的大小与返回列表的大小不同

转载 作者:行者123 更新时间:2023-12-01 17:56:56 26 4
gpt4 key购买 nike

我有一个变量public static List<Integer> allBooksIDs ,它是全局定义的,并在构造函数中初始化为 allBooksIDs = dbFunctions.getAllBookIDs();

问题是当我检查列表的大小 allBooks 时,该值为 28,但是当我检查 dbFunctions.getAllBookIDs() 返回的列表的大小时方法 - 57。我做错了什么吗?

getAllBookIDs()

public List<Integer> getAllBookIDs(){
List<Book> allBooks = getAllBooks();
List<Integer> res = new ArrayList<>();
for (Book b : allBooks){
res.add(b.getId());

}
return res;
}

private List<Book> getAllBooks() {
Query query = manager.createQuery("from books");
return query.getResultList();
}

更新

所以,问题解决了,但我不明白为什么变量会更新。我有一种方法将全局变量的值分配给另一个变量 List<Integer> nonRatedBooks = allBooksIDs ,之后变量正在更新。我只是提示:

List<Integer> nonRatedPubs = new ArrayList<>();
nonRatedPubs.addAll(allBooksIDs);

谁能解释一下,为什么会这样?这样我以后就不会再犯同样的错误。

最佳答案

您在 getAllBookIDs() 中有一个名为 allBooks 的变量,因此此方法返回的 List 将是内部定义的 allBooks,而不是全局定义的 allBooks 对象。

关于java - 全局变量的大小与返回列表的大小不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44028669/

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