2017-02-14 70 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>>