2017-07-31 66 views
0

我正在处理连接到数据库以获取一些记录,处理每条记录和更新记录回到数据库表的java应用程序。Java集合优化

以下是我的DB模式(样本数据):

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)用两个表 我请求数据一起未决状态一起获取请求使用以下查询此:

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)在所有细节记录的请求处理执行行动,请求更新状态

最终状态应该是这样的:

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>>")。有没有其他有效的方法来做到这一点?

谢谢
腰带

+0

你是什么意思,哈希图是复杂的 – Vaibs

+0

@Vaibs我刚刚更新了这个问题。谢谢。 –

+0

嗨,你为什么不使用适当的ORM?这应该会让生活更轻松.. –

回答

2

我认为你应该使用类类似,

Class RequestDetails{ 
int detailId; 
int statusId; 
String status; 
String userId; 
} 

,而不是地图HashMap<String, List<HashMap<String,String>>你应该使用HashMap<String, RequestDetails>也有像,代码简单的优点,并且还当你的工作如果数据量巨大,并且需要修改字符串,避免使用String数据类型总是更好,因为它是不可变的,并会降低性能。

希望这会有所帮助。

+0

Hi @darshan,添加一个类会降低性能,不是吗?我不会修改任何数据,只会迭代。谢谢 –

+0

嗨@PruthviRaj,正如我提到的使用类对象比使用String对象来存储数据一样,原因如下:1.它是一个广泛使用的实践,因此您的代码对其他人而言更加标准和易读。 2.使用String定义的类是个好主意,但是您应该使用这两种技术来检查性能,因为它取决于数据量。因此,请检查这两个选项,并使用更适合您的需求,我会建议使用用户定义的类。希望这可以帮助。 –

1

最重要的是,Darshan建议您必须重写hashCode和equals方法,原因是它处理HashMap时的基本合同,它也会增加性能。