2012-06-26 2 views
1

Я использую метод, который возвращает объект при вызове. Тип этого объекта - java.util.Collections.unmodifiableSet. Коллекция содержит только одно значение, которое мне нужно получить и передать другому методу. Проблема в том, что при этом:Получение значения объекта, который является коллекцией

Object o = table.getValue().toString(); 

возвращает значение, окруженное [], поскольку оно представляет собой коллекцию. Другой метод должен быть вызван с параметром типа Object, который должен быть только значением без []. У меня есть работа, удаляющая квадратные скобки с регулярным выражением, но хотелось бы, чтобы эта вещь работала каким-то образом, накладывая коллекцию на соответствующий тип.

+0

'toString()' это метод. Это опечатка? – amit

+0

Да, отредактирована опечатка. –

+0

Что вам нужно сделать .toString() .. Просто переходите к методу – Ahmad

ответ

1

Вы можете использовать итератор:

String result = ((Collection) table.getValue()).iterator().next().toString(); 

возвращает первое значение итератора коллекции. (Предположим, table.getValue() возвращает коллекцию)

+0

Так оно и есть, спасибо Андреас. Решение является приятным однострочным и обеспечивает именно то, что мне нужно. –

0

Если вы знаете, что эта коллекция содержит только одно значение, которое вы могли бы сделать это следующим образом:

String result = null; 
Collection collection = (Collection)table.getValue(); 
for(Object o : collection) { 
    result = o.toString(); 
    break; 
} 

Если коллекция не может содержать более одного значения, вы можете удалить break после result = o.toString();

Надежда что помогает.


Edit: Modified, коллекция теперь извлекается из таблицы. Добавлена ​​отливать в коллекцию и добавил перерыв

+0

Я понятия не имею, как это могло бы помочь, так как количество элементов в таблице (десятки тысяч) не имеет значения на данный момент, а проблема с o .toString() заключается в том, что он все еще удерживает квадратные скобки [] вокруг фактического значения. o представляет собой коллекцию в этот момент, ее нужно отправить в массивList или что-то вроде этого, но я не знаю, как сделать преобразование простым способом (или каким-либо другим способом). Также возвращаемым типом table.getValue() является Object, а не Collection .. –

+0

table.getValue() возвращает только идентификатор строки, по какой-то причине я не могу повлиять на это типа Collection. –

+0

Teemu, в * вашем * коде, 'o' никогда не бывает коллекцией, кроме String;) - но это может быть опечатка. –

Смежные вопросы