1

我有三种方法。

  1. 第一个方法从 List 中获取数据(其中包含特定于我们的应用程序的数据对象),然后调用第二个方法,将它获取的数据作为参数传递。

  2. 然后,第二种方法使用此信息作为参考,从另一个列表中获取特定信息,调用第三种方法并将此信息作为参数传递给它。

  3. 第三种方法与第二种方法相同,使用传入的数据作为引用来查找列表中的特定数据。

现在的问题是,我想以完全不同的方法使用这些信息。

我应该如何调用我的方法以获取数据?

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;
    }
4

2 回答 2

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您需要使用此方法结果的任何地方;

于 2012-12-14T17:05:01.037 回答
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 语句绑定它们。

于 2012-12-14T17:02:38.590 回答