首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java集合优化

Java集合优化
EN

Stack Overflow用户
提问于 2017-07-31 14:04:09
回答 2查看 86关注 0票数 0

我正在开发一个java应用程序,它连接到数据库来获取一些记录,处理每个记录,并将记录更新回数据库表。

下面是我的db模式(包含示例数据):

代码语言:javascript
复制
Table A: Requests

| REQUESTID |    STATUS | 
-------------------------
|  1        |    PENDING|
|  2        |    PENDING|

Table B: RequestDetails


| DETAILID | REQUESTID   | STATUS  | USERID |
---------------------------------------------
|  1       |    1        | PENDING | RA1234 |
|  2       |    1        | PENDING | YA7266 |
|  3       |    2        | PENDING | KAJ373 |

以下是我的要求:

1)从两个表中获取请求和挂起状态,以及请求数据,我使用下面的查询:

代码语言:javascript
复制
SELECT Requests.REQUEST_ID as "RequestID",RequestDetails.USERID as "UserID",RequestDetails.DETAILID as "DetailID" 
FROM Requests Requests
JOIN RequestDetails RequestDetails
ON (Requests.REQUESTID=RequestDetails.REQUESTID AND Requests.REQUEST_STATUS='PENDING' AND RequestDetails.STATUS='PENDING')

2)我使用HashMap<String, List<HashMap<String,String>>来存储所有值

3)遍历每个请求并获取详细信息List<HashMap<String,String>>对每个详细记录执行操作并更新状态

4)处理完请求的所有明细记录后,更新请求表中请求的状态

结束状态应该是这样的:

代码语言:javascript
复制
    Table A: Requests

    | REQUESTID |    STATUS | 
    -------------------------
    |  1        |    PENDING|
    |  2        |    PENDING|

    Table B: RequestDetails


    | DETAILID | REQUESTID   | STATUS  | USERID |
    ---------------------------------------------
    |  1       |    1        | PENDING | RA1234 |
    |  2       |    1        | PENDING | YA7266 |
    |  3       |    2        | PENDING | KAJ373 |

我的问题是:我使用的集合非常复杂("HashMap<String, List<HashMap<String,String>>")。有没有其他有效的方法来做到这一点?

谢谢,

窗扇

EN

回答 2

Stack Overflow用户

发布于 2017-07-31 14:55:31

我认为你应该像这样使用class,

代码语言:javascript
复制
Class RequestDetails{
int detailId;
int statusId;
String status;
String userId;
}

你应该使用HashMap<String, RequestDetails>而不是map,因为它具有代码简单性等优点,而且当你处理大量数据和需要修改字符串时,最好避免使用字符串数据类型,因为它是不可变的,会降低你的性能。

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2017-07-31 14:59:53

最重要的是,正如Darshan所建议的,你也必须重写hashCode和equals方法,原因是它是处理HashMap时的基本契约,它也会提高性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45408484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档