为了账号安全,请及时绑定邮箱和手机立即绑定

将多个项目添加到 hashmap

将多个项目添加到 hashmap

慕丝7291255 2021-12-10 12:26:38
我正忙于一个需要edit texts从数据库中填充下拉列表的程序,我正在使用哈希图,但我需要在哈希图中放置大约 10 列,因为有 10 个字段需要填充。这是我的代码:        try {            ConnectionHelper conStr = new ConnectionHelper();            connect = conStr.connectionclass();            if (connect == null) {                Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();            } else {                String query = "select * from Customers";                stmt = connect.prepareStatement(query);                rs = stmt.executeQuery();                ArrayList<String> dataF = new ArrayList<>();                hashmap = new HashMap<>();                while (rs.next()) {                    String id = rs.getString("CUSTOMER_ID");                    String CName = rs.getString("CUSTOMER_FIRST_NAME");                    String Surname = rs.getString("CUSTOMER_SURNAME");                    String Number = rs.getString ("CUSTOMER_TEL_NUMBER");                    String Cell= rs.getString ("CUSTOMER_CELL_NUMBER");                    String Buiilding= rs.getString ("CUSTOMER_BUILDING_NUMBER");                    String Street= rs.getString ("CUSTOMER_STREET");                    String suburb= rs.getString ("CUSTOMER_SUBURB");                    String City= rs.getString ("CUSTOMER_CITY");                    String postal= rs.getString ("CUSTOMER_ZIP_CODE");                    // value of database                    dataF.add(id);                    hashmap.put(id,CName,Surname,Number,Cell,Buiilding,Street,suburb,City,postal);                }                ArrayAdapter NoCoreAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, dataF);                customerselect.setAdapter(NoCoreAdapter);            }        } catch (SQLException e) {            e.printStackTrace();        }我使用 hashmap 的原因是因为我遵循的示例使用了 hashmaps,我不知道如何使用列表在下拉列表中显示
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

HashMap只需要两个参数:key和value


https://docs.oracle.com/javase/8/docs/api/index.html?java/util/HashMap.html


本key应该是一个标识符是唯一的目标。在您的情况下,您正在使用id. 如果这是您的数据库表(或任何其他唯一数字)上的主键,则完全正确。


其他字段需要一起包装成一个对象(或者单独存储在 HashMap 中,每个字段都有自己的唯一 id;根据您的问题,这看起来不像您在做什么)。


你应该做这样的事情:


    final Customer customerObject = new Customer(CName, Surname, Number, Cell, Buiilding, Street, suburb, City, postal);

    hashmap.put(id, customerObject);

创建自定义Customer类及其所有字段留给读者作为练习。


查看完整回答
反对 回复 2021-12-10
?
MM们

TA贡献1886条经验 获得超2个赞

如果查看接口put方法的源代码,Map您会发现只能找到:

put(K key, V value)

这正是 aMap应该如何工作。您将一个键映射到一个值,这样您就可以快速访问它而不用遍历整个映射。因此,在您的情况下,我建议您将所有信息存储在一个 serperate 对象中,Customer并将其映射到客户的相关 id。

如果您需要有效地查询客户数据(同时不使用 id),请考虑使用可以为您完成工作的数据库。


查看完整回答
反对 回复 2021-12-10
?
隔江千里

TA贡献1906条经验 获得超10个赞

Put 方法是Map<K, V>.put(K key, V value)签名的。所以你不能只是添加值。首先弄清楚密钥应该是什么,然后使用 put 方法。您可以通过调用Map.get(Object key)方法使用键检索值。


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号