我有三种方法。
第一种方法从List(包含特定于我的应用程序的数据对象)中获取数据,然后调用第二种方法,将获取的数据作为参数传入。
然后,第二种方法使用此信息作为参考,从另一个列表中获取特定信息,调用第三种方法并将此信息作为参数传递给它。
第三种方法与第二种方法相同,使用传入的数据作为参考来查找列表中的特定数据。
现在的问题是,我想以完全不同的方式使用这些信息。
我应该如何调用我的方法来获取数据?
private void getRecords() {
List<LabelSet> allSets = labelSetStructureService.getLabelSets();
for (LabelSet labelSet : allSets) {
List<LabelSet> groups = labelSetStructureService.getLabelGroupsForSet(labelSet.getId());
for (LabelGroup group : groups) {
getValuesForLabel(group.getCustomerMeasure(), labelSetStructureService.getLabelsForLabelGroup(group.getCustomer().getId(), group.getId()), labelSet);
}
}
}
private void getValuesForLabel(CustomerMeasure measure, List<Label> labels, LabelSet labelSet) {
for (Label label : labels) {
List<LabelSet> usageRecs = labelDataService.getLabelData(label, LabelSetStorage.DAY_BY_MONTH_STORAGE, new DateTime(), new DateTime().minusWeeks(1));
preProcessUsageRecs( usageRecs, labelSet);
}
}
private List<LabelUsage> preProcessUsageRecs(List<LabelUsage> usageRecs, LabelSet labelSet) {
//Format records, use list instead strings where possible
List<LabelSet> usageRecords = usageRecs; {
for( LabelUsage labelUsage : usageRecs)
usageRecords.addAll(usageRecs);
}
return usageRecords;
}
答案 0 :(得分:0)
听起来你正在编写一些可疑的代码。根据您的描述,如果我理解了问题,您的API应该看起来像这样:
public void go(Map<MapKey,Collection<MyObject>> values, Keyword keyword)
{
for(MapKey key: values.keyset())
{
search(values.get(key),keyword);
}
}
public void search(Collection<MyObject> searchSpace, Keyword key)
{
for(MyObject currentSearch : searchSpace)
{
if(currentSearch == key)
{
//do something
}
}
}
关键是你应该能够将搜索推广到一个函数中,如果需要特殊的东西,你可以将一些私有(帮助)函数应用于这个过程并通过switch语句绑定它们。
答案 1 :(得分:0)
Java是一种基于对象的语言,因此使用成员变量来存储该一次调用的结果,如下所示:
public List<LabelUsage> labels;
...
private List<LabelUsage> preProcessUsageRecs(List<LabelUsage> usageRecs, LabelSet labelSet) {
//Format records, use list instead strings where possible
List<LabelSet> usageRecords = usageRecs; {
for( LabelUsage labelUsage : usageRecs)
usageRecords.addAll(usageRecs);
}
this.labels = usageRecords;
return usageRecords;
}
然后访问this.labels
,无论您需要使用此方法的结果;