Java,将两个List <strings>合并为一个return语句

时间:2017-02-14 21:36:31

标签: java

 @RequestMapping(value="/portfolios", method = RequestMethod.GET)
    public @ResponseBody List<PortfolioVO>  getPortfolios(HttpServletRequest request, @RequestParam(required= false) String region) {
List<PortfolioVO> portfolios = gmiCacheService.getPortoliosForRegion(user, region);

        return portfolios;      
    }

我还有另一个我需要添加的功能列表。

然后只返回投资组合。我是Java的新手,不知道如何实现它。

3 个答案:

答案 0 :(得分:1)

在c#中,我会使用Tuple分别存储这两个列表。但在Java中,我没有得到类似的数据结构。但是你可以制作自定义元组结构。

From this answer

public class Tuple<X, Y> { 
  public final X x; 
  public final Y y; 
  public Tuple(X x, Y y) { 
    this.x = x; 
    this.y = y; 
  } 
}

使用上述结构,您可以存储两个不同的列表并使用它。

如果您被允许使用第三方库,则可以javatuples使用Pair结构

答案 1 :(得分:1)

自Java doesn't have built-in pairs以来,&#34; Java方式&#34;这样做是为了返回一个包含两个List字段的自定义类。类似的东西:

public class MyReturnType{
      public List<PortfolioV0> l1,l2;
}

另一个选择是返回List<List<PortfolioV0>>(列表列表),第一个项目是第一个列表,第二个项目是第二个列表。

第三种选择是放弃,编写自己的Pair课程(或使用Apache's),然后返回Pair<List<PortfolioV0>,List<PortfolioV0>>

答案 2 :(得分:0)

我看到两种方式:

1)返回列表数组:public @ResponseBody List[]<PortfolioVO> getPortfolios( ... )

在其中:return new List[] { list1, list2 };

这很快实现,但它并不好看,有点脏。

2)我认为,更合适的方式是为这种情况创建类:

static class ListPairHolder {
    List<PortfolioVO> list1;
    List<PortfolioVO> list2;

    ListPairHolder(List<PortfolioVO> list1, List<PortfolioVO> list2){
       this.list1 = list1; this.list2 = list2;
    }
}

并从方法返回此类型。