Я работаю с Java 7, и я ищу в API-интерфейсе Guava способ применения функции к массиву без необходимости сначала преобразовывать его в коллекцию. Я готов создать свой собственный класс для этой цели, но я не хочу изобретать колесо.Преобразование общего массива с использованием Guava
Так как резюме (если вы точно не знаете, о чем я говорю), это то, что я нашел до сих пор, что вы можете сделать с Guava, чтобы применить функцию к массиву как Я сказал:
Integer[] someNumbers = new Integer[]{1, 2, 3};
Integer[] returnedNumbers = Collections2.transform(Arrays.asList(someNumbers), squareNumberFunction).toArray(new Integer[0]);
assertThat(returnedNumbers).isEqualTo(new Integer[]{1, 4, 9});//Using AssertJ here
Но я хотел бы быть в состоянии сделать что-то вроде этого, вместо:
Integer[] someNumbers = new Integer[]{1, 2, 3};
Integer[] returnedNumbers = Arrays.transform(someNumbers, squareNumberFunction);
assertThat(returnedNumbers).isEqualTo(new Integer[]{1, 4, 9});
в идеале функциональность я говорю о будет типобезопасный.
EDIT
Для еще дальнейшего уточнения проблемы:
- Массивы я говорю о не примитивные массивы, они ссылаются на сложные объекты (я использовал только целые числа для легко иллюстрировать то, о чем я говорил).
- У меня нет контроля над не получило или отправить структуру, они являются массивов (представьте себе ситуацию, унаследованный код, где это возможно, если вы думаете, что поможет вам понять эту проблему лучше).
- Эффективность является должна когда преобразования массивов и доступа их.
Дженерики и массивы не сочетаются друг с другом. Почему вы используете массивы в первую очередь вместо списков? Это то, что вам следует делать: предпочитайте коллекции по массивам. –
Да, к сожалению, проблема в том, что ** Мне нужно использовать массивы ** для этого случая, а также мне нужно ** эффективность ** при преобразовании массивов (может быть любого типа). –
У вас будет более эффективная работа с использованием коллекций, поскольку она позволяет избежать копирования. Guava все о коллекциях, и AFAIK, вы не найдете метод, который вы хотите в Гуаве. Но ничто не запрещает вам писать обертку, содержащую код, опубликованный в вашем вопросе. –