java - 运行后实例化全局可访问列表

标签 java android android-studio arraylist

我从数据库中检索数据,然后将其添加到 list1.add() 列表中。列表 1 将有自己的项目类别,例如 Sciencebooks ,List2 将有 Fictionbooks ,List3 将有 Cosmeticbooks等等。我不知道从一开始就会有多少列表,并且数据库可以在任何给定时间增加 list1 的大小。 , list2 , list3 , list4 ,...list25 ...等等,因此对新列表的每个实例进行硬编码将不起作用,特别是如果必须全局访问它们的话。

如果数据来自包含项目 book_type 的类别:sciencebook ,据我所知,我无法创建列表并将其命名为变量 List<Object> (book_type value from data) = new ArrayList<>当检索数据时。

我不想用 List 创建一个主列表,因为如果我尝试保持每个类别的索引组织,当我需要向单独的类别添加新项目时,这会增加索引计数,我不这样做想要必须逐一增加一个长列表的每个索引,而不是单独的列表。除此之外,我不希望一个很长的列表必须循环/循环才能检索类别。

如何根据类别标记列表并使其在全局范围内可用?

最佳答案

对此的一种解决方案可能是使用 Map,其中键是图书类型,值是图书列表。

此解决方案的问题在于,尽管您解决了重新创建类似列表的初始问题,但存在类型删除,因为我们无法确切知道 map 中每个键存储的书籍类型。

interface Book {
    void read();
}

class ScienceBook implements Book {
    @Override void read() { }
}

class FictionBook implements Book {
    @Override void read() { }
}
enum BookType {
    SCIENCE,
    FICTION;
}

Map<BookType, List<? extends Book>> books = new HashMap<>();

List<Book> books = books.get(BookType.SCIENCE);

关于java - 运行后实例化全局可访问列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60470152/

相关文章:

android - 不同 ViewType 之间的 NotifyItemMoved 不起作用

java - Spring Boot 和 Proguard

java - 使用 JEditorPane 自动分页

java - JAVA中使用MD5比较文件内容

java - 使用光照时,顶点着色不适用于动态创建的网格

java - 如何声明一个空 int

android - 通过我的应用程序喜欢 youtube 的视频

android - 在 3rd 方应用程序中打开 PDF 会导致 TransactionTooLargeException

android - Android 中使用 Sqlite 全文搜索对非英语字符的 Unicode 支持

Android Studio 无法生成签名的 apk