2017-03-02 43 views
0

我有一組一組變量的那個(我猜)包含字符串從查詢(這是我所知道的,並需要檢索)以這種方式定義返回:如何知道在Eclipse上的java項目中應該有哪些類型的getter? (它是未知的我)

private Set<Set<Type_A>> variable_A; 
variable_A = query.getVarA(); 

現在我需要一個返回這些字符串數組的getter,並嘗試使用下面的代碼,但沒有成功,因爲它的返回類型我猜。

我不能調試我的代碼,因爲它是一個由jsp文件使用的javabean,Eclipse不會告訴我如何繼續。有沒有辦法來解決這個問題?我public void getVarA()public ArrayList<String> getVarA()

public Set<Axiom> getVarA() { 
    Iterator itr1 = variable_A.iterator(); 
    Set set; 
    while(itr1.hasNext()) { 
     set = (HashSet)itr1.next(); 
    }     
    return set; 
} 

回答

0

嘗試可能是這樣的,雖然我不完全知道什麼是你想要的目的。希望這有助於;)

public class Foo<T> { 

    private final Set<Set<T>> setsOfSets = new HashSet<>(); 

    public static void main(String[] args) { 
     final Foo<String> tester = new Foo<>(); 
     Set<String> set1 = new HashSet<>(Arrays.asList("A", "B")); 
     Set<String> set2 = new HashSet<>(Arrays.asList("C", "D")); 
     Set<String> set3 = new HashSet<>(Arrays.asList("E", "F")); 
     tester.addRecord(set1); 
     tester.addRecord(set2); 
     tester.addRecord(set3); 

     System.out.println(tester.getFirstSet()); 
     System.out.println(tester.getFirstSet()); 
     System.out.println(tester.getFirstSet()); 
     System.out.println(tester.getFirstSet()); 
    } 

    public void addRecord(Set<T> record) { 
     setsOfSets.add(record); 
    } 

    public List<T> getFirstSet() { 
     Iterator<Set<T>> iterator = setsOfSets.iterator(); 
     while (iterator.hasNext()) { 
      final Set<T> set = iterator.next(); 
      iterator.remove(); 
      return new ArrayList<>(set); 
     } 
     //if there are no sets present 
     return null; 
    } 
} 
+0

我認爲這適用於像你這樣的一組簡單的字符串,但我不完全確定集的內容(可能是在另一個文件中定義的,但我無法訪問,因爲我使用Maven進行編譯,它處理諸如缺少的庫和其他案例等許多東西。當我試圖學習如何管理它們時,您的代碼讓我更加了解了一些設置,但是並不能完全解決我的問題: \ – GondraKkal

+0

我的例子應該與創建 最終Foo時定義的任何類型一起工作 tester = new Foo <>(); 當您調用方法 public Set getVarA()時,您可以告訴我您的類的用例。當將會包含的類實例在你的設置集中你定義了類型。應該檢索哪個應用程序可以很容易地包含一些其他POJO。 – Kristaps

0

你的getVarA確實是通過迭代variable_a並返回該迭代爲raw Set的最後一個項目。

如果您使用的是java8,則可以使用流及其flatMap操作將所有子集的值收集到一個集合中。

public Set<Type_A> getVarA() {    
    return variable_A.stream().flatMap(Set::stream).collect(Collectors.toSet()); 
} 

否則,您可以迭代foreach並返回收集的結果。

public Set<Type_A> getVarA() { 
    Set<Type_A> result = new HashSet<>(); 
    for (Set<Type_A> subset : variable_A) { 
     result.addAll(subset); 
    } 
    return result; 
} 
+0

嘗試了你的代碼,但在'for'行出現錯誤:~~~~ '不兼容的類型:java.util.Set 不能轉換爲java.util.Set < java.lang.String>'~~~~以及其他一些關於以下錯誤的信息:'沒有爲addAll找到合適的方法(java.util.Set )' - - - 編輯: – GondraKkal

+0

這是因爲您有一個集合,並且您正試圖將其轉換爲集合。如果你有一個Set 並且你調用它的addAll方法,它的參數必須是另一個Set 。 – Januson

+0

我編輯了foreach示例來重新排列錯位的字符串類型。 – Januson

相關問題