2013-12-18 79 views
2

我有這個問題,我找不出來。我有這個練習:帶有多個泛型類型的ArrayList?

完成以下通用Pair類,以便執行 程序給出指示的輸出。不要改變主。

class Pair ... { ... } 

class GenericPairTest {   
public static void main(String[] args) {  
    Pair<String,Integer> phoneNumber = new Pair<>("Bill's number", 1324); 
     System.out.println(phoneNumber); 

      Pair<Double,Double> point = new Pair<>(3.14, 2.32);  
     System.out.println(point); 
    } 
} 

輸出suposed是這樣的:

比爾號1324

3.14 2.32`

我試着這樣做:

import java.util.*; 

class Pair <T,U> { 

    ArrayList<T,U> newList = new ArrayList<>(); 

    Pair(T inT, U inU){ 
    newList.add(inT,inU); 
    } 

} 

class GenericPairTest { 

    public static void main(String[] args) {   
     Pair<String,Integer> phoneNumber = 
      new Pair<>("Bill's number", 1324); 
     System.out.println(phoneNumber); 
     Pair<Double,Double> point = 
      new Pair<>(3.14, 2.32); 
     System.out.println(point); 
    } 
} 

但不起作用:(

+2

當你說「不工作:(」 - 你是什麼意思?編譯錯誤?邏輯錯誤?這將幫助人們更好地幫助你。 – Maroun

回答

10

爲什麼你需要一個列表?你只需要存儲的兩個對象:

class Pair <T,U> { 
    private T _t; 
    private U _u; 

    public Pair(T t, U u) { 
     _t = t; 
     _u = u; 

    public String toString() { 
     return _t + " " + _u; 
    } 
} 
+0

那麼他爲什麼要在主體中創建一個數組列表? :( 是不是語法「class name = new class <>();」用於創建列表? –

+4

誰創建了arraylist?在哪? – BobTheBuilder

+0

我被這個位弄糊塗了Pair phoneNumber = new Pair <>(「Bill's number」,1324);' –

4

您正在尋找此我想:

ArrayList<Pair<T,U>> 

,但我認爲你應該創建一個內部Pair類可能是這個樣子:

public class Pair<T, U> { 
    private T left; 
    private U right; 
    // getters/setters + constructor for them 
} 

可以使用Map以及像其他人指出,但你不需要ArrayList

1

如果是你的情況,這將足夠記住Pair類中的對,並且沒有內部的ArrayList

之後,在外部,您可以在列表中包含Pair s。

final List<Pair<T,U>> pairList = new ArrayList<>(); 

此外,很抱歉地說這個,但是您在這裏錯過了一些非常基本的OOP技能。

5

您的Pair課程中不需要ArrayList

只要將這兩個值保留爲兩個通用成員即可。

+0

你應該添加代碼片段 –

3

你不能做到這一點與ArrayList的,但因爲你的一雙總是持完全相同的兩個對象,它真的不需要將它們存儲在列表中。只需使用兩個字段:

class Pair<T,U> { 
    final T t; 
    final U u; 

    Pair(T t, U u) { 
     this.t = t; 
     this.u = u; 
    } 

    @Override 
    public String toString() { 
     return t + " " + u; 
    } 
} 

您使用ArrayList的方式非常暗示了Map。例如,你可以寫:

Map<T,U> map = new HashMap<>(); 
Pair(T t, U u) { 
    map.put(t, u); 
} 

但由於地圖可以容納任何數量的鍵值對,它是不是真的用來存儲一對合適的結構。