2015-07-16 3 views
1

Есть ли какой-либо метод для преобразования карты, полученной из servletRequest.getParameterMap(), которая возвращает Map<String, String[]> в Map<String, Object[]> простым способом, кроме цикл for?Преобразование карты <String, String []> в карту <String, Object []> в java

У меня есть метод getSomething(), который объявлен как

public Response getSomething(final Map<String, Object[]) 

я должен вызвать этот метод с servletRequest.getParameterMap() в качестве входных данных.

+4

Ваш вопрос выглядит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Можете ли вы добавить дополнительную информацию о том, почему вам нужно это изменение? – Pshemo

+1

Также, что вы подразумеваете под * convert *? Можем ли мы предположить, что вы хотите получить новую независимую карту, которая будет копией оригинальной (поскольку в противном случае вы могли бы попробовать добавить «Целые числа» в массив объектов, которые по-прежнему будут массивом для строк). – Pshemo

+1

На всякий случай вы этого не знаете: чтобы добавить дополнительную информацию к вашему вопросу, используйте [edit]. – Pshemo

ответ

7

Несомненно.

Map<String, Object[]> objectMap = 
    Collections.unmodifiableMap(servletRequest.getParameterMap()); 

Это правильный, безопасный тип и не рискует проблем с случайным помещением ошибочно введенных значений в карту.

+2

Я также не мешаю нам помещать нестроковое значение в 'String []' array через 'Object []' reference (хотя это поведение будет остановлено во время выполнения). – Pshemo

-1

Этот способ использует типы Java raw.

Map<String, String[]> map1 = new HashMap<>(); 
Map<String, Object[]> map2 = (Map)map1; 

Это рабочее решение, хотя, как Pshemo отметил, java raw types shouldn't be used.

+4

Обязательная ссылка: [Что такое необработанный тип и почему мы не должны его использовать?) (Http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we -use-it) – Pshemo

+0

Почему downvote? Даже если это опасно, это рабочее решение. – kamil09875

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