我有一个名为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;我失踪了。
答案 0 :(得分:1)
我不太明白这里的用例。但是,我的理解是你有一个ArrayList<Object> mylist
,你需要根据从DB检索的字符串找到它的大小。
您可以将列表存储在缓存中,其中键是列表的名称,值是实际对象。您可以使用redis,eh-cache或memcache(或任何类似的东西)来实现相同的目标。
因此,当您从DB中检索名称时,从缓存中获取相应的对象,并在对其进行类型转换后对该对象执行size()。如果您在缓存中存储列表类型而不是对象类型,则不需要最后一部分(类型转换)。
答案 1 :(得分:0)
您可以使用地图:
Map<String, List> listMap = new Hashmap<>();
每次创建列表时 - 使用作为列表名称的键将其添加到地图中。获得名称后,您可以轻松检查地图中是否存在此类列表,获取它,检查其大小并进行迭代...请注意,一旦完成列表,您应将其从地图中删除,以及否则你会把它们留在身边,它会让你的记忆消耗殆尽。