2017-06-14 34 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);