2017-02-23 182 views
0

У меня есть файл Java с этой переменной, и там должно быть содержание строк в нем:Использование и содержание печати Сета <Set<T>> в Java

private Set<Set<MyAxiom>> explanations;

Я читал, что наборы являются коллекции некоторого типа данные (которые должны быть MyAxiom, я думаю), но не смогли найти, как получить к ним доступ, и мне нужно штамповать.

Я попытался получить эти объяснения с методом прибудет обратного

public Set<Set<OWLAxiom>> getExpl(int index) { 
    return this.explanations(index); 
} 

Подобных метод выработанные для других нормальных величин, но я думаю, что Set потребностями являются собственными командами, не так ли? И, кстати, это набор множеств. Я нахожу это очень сложным. Я был бы очень рад узнать, как с ними обращаться, а если нет, то будет оценена ссылка на документацию.

EDIT: Возможно, это полезно для ваших ответов. Эта переменная объяснения находится в javabean, используемом файлом jsp. Он находится в проекте webapp, который я компилирую с maven. Компиляция прекрасно с этим ниже код, но когда я доступ через браузер (с Tomcat) Я получаю ошибку The method getExpl() in the type BundleQueryManagement is not applicable for the arguments (int)

Это альтернативный метод, который я пробовал:

public Set<Set<OWLAxiom>> getExpl() { 
    return this.explanations; 
} 

Или даже

public void getExpl() { 
    return this.explanations; 
} 
+0

Вы хотите 'Set ' возвращенных или 'Axiom '? –

+0

Насколько я могу судить, ваш метод действителен только в том случае, если вы возвращаете this.explanation; ' –

+0

[Документация для' Set'] (https://docs.oracle.com/javase/8/docs/api /java/util/Set.html) – khelwood

ответ

2

Ваш код сообщает, что у вас есть значение индекса, и вы хотите получить соответствующее значение в своем Set. Но на самом деле вы не можете получить доступ к Set, используя индекс, поскольку Set s - неупорядоченные коллекции объектов. Так что это невозможно.

Если вы хотите получить доступ к своим элементам таким образом, тогда вам следует рассмотреть возможность использования списка.

Смотрите также: Why doesn't java.util.Set have get(int index)?


EDIT

Вы можете напечатать все элементы рекурсивно следующим образом:

public void printExpl(Set<Set<MyAxiom>> explanations) { 
    for (Set <MyAxiom> exp: explanations) { 
     for (MyAxiom obj: exp) { 
      System.out.println(obj.toString()); 
     } 
    } 
} 
+0

Я хочу распечатать из всей группы элементов, которые должны быть элементами String – GondraKkal

+0

@ GondraKkal см. отредактированную часть ответа. Это напечатает все элементы. Обязательно переопределите метод toString() 'соответствующим образом. –

+0

Подождите, я должен вернуть указанные элементы, поэтому я могу напечатать их в файле jsp, который будет использовать этот метод. Как это изменилось? Кроме того, что такое exp и obj? Я хотел бы узнать больше, что вы здесь сделали – GondraKkal