2017-02-14 83 views
0
@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;  
    } 

我有另一个需要添加的函数的List。Java,将两个List <Strings>合并成一个返回语句

然后只是返回投资组合。我对Java非常陌生,不知道如何实现它。

+1

究竟是什么,你要回来? 2个列表分开吗? 1列表与所有这两个列表中的元素?别的东西? – njzk2

+0

@DanielPryden不,他想要从方法返回两个**不同的列表,不加入它们 – Andremoniy

+0

是的,我需要它们分开,因为我将按不同的方式对它们进行排序 – user7470849

回答

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

,并从方法返回这种类型。

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

由于Java doesn't have built-in pairs,在“Java的方式”做的是回到那个有两个List自定义类领域。喜欢的东西:

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

另一种选择是返回List<List<PortfolioV0>>(A列出的清单),并有第一个项目是第一个列表,第二个项目,第二个列表。

第三种选择是放弃,写你自己的Pair类(或使用Apache's),并返回一个Pair<List<PortfolioV0>,List<PortfolioV0>>