2017-06-14 65 views
-1

我正在讀取一個CSV文件並根據每行上的值創建對象。我真的不能命名每一個對象獨有的東西,所以我做的:在ID變量中獲取具體值的對象

new User(x, y, z); 

但我怎麼能然後找到新創建的對象?有沒有辦法循環訪問特定類(即用戶)的所有對象?或者至少找到一個基於ID的? (例如,用戶(1))

在SQL我可以簡單地

select * from X where ID=1 

,但我怎麼能創建一個基於從文本文件解析的數據幾個無名對象後做到這一點在Java中?

+0

您聲明一個變量來訪問:用戶的用戶=新用戶(x,y,z); –

+0

你把它們放在一個容器中......就像你的SQL中的'X'。 – erip

+0

只需將它們放入地圖。 – tsolakp

回答

0

首先,將對象存儲到列表中。

List<User> usersList = new ArrayList<>(); 
... 
... // add each object to usersList 

後來,模仿你的SQL查詢,你可以做線沿線的東西:

Optional<User> result = usersList.stream().filter(x -> x.getId() == 1).findFirst(); 

此解決方案假定您有User的類內的id場和一個叫getId()吸氣。

讀數 -Optional<T>

+1

我認爲他不知道如何在應用程序內存儲任何東西。 –

3

或者至少找到一個基於ID?

您有一個標示可以創建User
因此,您應該將對象存儲在Map中,其中密鑰爲User id,值爲User對象。

隨着Integer爲ID,它會給:

Map<Integer, User> usersById = new HashMap<>(); 

for (...){ 
    usersById.put(userId, new User(userId, x, y, z)); 
} 

然後你可以檢索這樣的用戶:

User user = usersById.get(1);