查找ArrayList的大小,其中列表名称作为String

时间:2016-10-10 15:13:23

标签: java arraylist spring-el

我有一个名为say的" mylist"的java对象的ArrayList。 我从数据库中获取列表(mylist)的名称,该列表以字符串形式出现。我需要在JAVA中找到这个列表的大小,并且需要迭代它。

有办法做到这一点吗?

编辑: 为了更清楚,我有一个班级"候选人"

class Candidate {

    String firstName;
    String lastName;
    List<Education>educationRecords;
    .....
}

class Education {

    String school;
    String degree;
    .....
}

我需要从JSONObject填充Candidate对象,JSONObject的结构与Candidate对象非常不同(所以不能使用Gson或jackson)。

firstName,lastName,school和degree等简单字段存储在数据库中。

我获取一个Listfields并迭代它们以设置Candidate对象。为了设置firstName,lastName,我正在使用SpEL。

但是,对于像学校和学位这样的领域,它变得很复杂,因为我需要知道JSONObject中教育记录的大小。

所以,我想在迭代所有字段时如果在Education类中存在school field(使用反射),我需要检查educationRecords是否是Candidate类中的List类型,然后是一些逻辑X(取educationRecords as variable name)迭代它。

这是逻辑&#34; X&#34;我失踪了。

2 个答案:

答案 0 :(得分:1)

我不太明白这里的用例。但是,我的理解是你有一个ArrayList<Object> mylist,你需要根据从DB检索的字符串找到它的大小。

您可以将列表存储在缓存中,其中键是列表的名称,值是实际对象。您可以使用redis,eh-cache或memcache(或任何类似的东西)来实现相同的目标。

因此,当您从DB中检索名称时,从缓存中获取相应的对象,并在对其进行类型转换后对该对象执行size()。如果您在缓存中存储列表类型而不是对象类型,则不需要最后一部分(类型转换)。

答案 1 :(得分:0)

您可以使用地图:

Map<String, List> listMap = new Hashmap<>();

每次创建列表时 - 使用作为列表名称的键将其添加到地图中。获得名称后,您可以轻松检查地图中是否存在此类列表,获取它,检查其大小并进行迭代...请注意,一旦完成列表,您应将其从地图中删除,以及否则你会把它们留在身边,它会让你的记忆消耗殆尽。