我有一个 JSF 表,它使用 Hashmap 来存储选定的复选框。我的问题是:是否可以使用 2D Java 数组来存储键而不是 Hashmap?
编辑
我使用此代码来存储选定的键。如何重写此代码Map
?
private HashMap<String, Boolean> selected = new HashMap<>();
// send the list
public Map<String, Boolean> getselected() {
return selected;
}
我的想法是创建 2D 数组(将使用 MAP),它将存储页数和页面上的列表。例如 100 页 x 10 个键。
编辑 2
我创建了具有延迟加载的 JSF 表,该表从 Oracle 获取数据。JSF 工作得非常好而且很快。我面临的问题是,当我尝试创建select all
复选框时,它将所有 kays 并将密钥存储到hashmap
. 稍后这些键将用于 SQL 查询以删除用户选择的行。我创建了包含 10 000 行的数据库表并将它们显示到 JSF 表中。当我单击它们时,我hashmap
用 10 000 创建了所有内容。对于该大小,性能相对较好。我测试删除它们 - 我创建了 Java 方法,该方法hashmap
使用存储在hashmap
. 它的显示,但可以做一些代码优化。最大的问题是可扩展性。我测试了hashmap
有 1 000 000 个键 - 它可以工作,但速度非常慢。我需要设计 JSF 表来处理非常大的数据。我认为解决方案是使用 2D 数组(让我们在这个例子中调用它)。我将这样解释我的想法:例如,我将有 100 页的 JSF 表。每页将有 10 行。进入标准hashmap
时,当我选择所有行时,我将有 1000 个键。在二维数组解决方案中,我可以创建包含 100 个元素的数组,当我在页面之间切换时,我将只有 10 行,这些行将从分页代码中生成。当我选择所有数据库行时,我只能将可见行键插入二维数组。例如,我替换的数组中的其他位置1
为了知道有什么东西。当我按下删除按钮时,Java 代码将知道所有元素都被“虚拟”选中。有没有更好更简单的解决方案?