Нахождение макс. значения / минимального значения в массиве примитивов с помощью Java

Если бы Вы хотите использовать его в простом SQL, я позволил бы процедуре хранилища заполнить таблицу или временную таблицу с получающимися строками (или пойти для @Tony подхода Andrews).
, Если Вы хотите использовать решение @Thilo, необходимо циклично выполнить курсор, использующий МН / SQL. Здесь пример: (Я использовал процедуру вместо функции, как @Thilo сделал)

create or replace procedure myprocedure(retval in out sys_refcursor) is
begin
  open retval for
    select TABLE_NAME from user_tables;
end myprocedure;

 declare 
   myrefcur sys_refcursor;
   tablename user_tables.TABLE_NAME%type;
 begin
   myprocedure(myrefcur);
   loop
     fetch myrefcur into tablename;
     exit when myrefcur%notfound;
     dbms_output.put_line(tablename);
   end loop;
   close myrefcur;
 end;
169
задан Ciro Santilli 新疆改造中心法轮功六四事件 13 March 2015 в 07:32
поделиться

4 ответа

Использование Commons Lang (для преобразования) + Коллекции (в мин. / Макс.)

import java.util.Arrays;
import java.util.Collections;

import org.apache.commons.lang.ArrayUtils;

public class MinMaxValue {

    public static void main(String[] args) {
        char[] a = {'3', '5', '1', '4', '2'};

        List b = Arrays.asList(ArrayUtils.toObject(a));

        System.out.println(Collections.min(b));
        System.out.println(Collections.max(b));
   }
}

Обратите внимание, что Arrays.asList () обертывает базовый массив, поэтому он не должен занимать слишком много памяти и не должно выполнять копирование элементов массива.

164
ответ дан 23 November 2019 в 20:51
поделиться

Вот служебный класс, предоставляющий методы min / max для примитивных типов: Primitives .java

1
ответ дан 23 November 2019 в 20:51
поделиться

Да, это делается в классе Collections . Обратите внимание, что вам нужно будет вручную преобразовать ваш примитивный массив char в Character [].

Короткая демонстрация:

import java.util.*;

public class Main {

    public static Character[] convert(char[] chars) {
        Character[] copy = new Character[chars.length];
        for(int i = 0; i < copy.length; i++) {
            copy[i] = Character.valueOf(chars[i]);
        }
        return copy;
    }

    public static void main(String[] args) {
        char[] a = {'3', '5', '1', '4', '2'};
        Character[] b = convert(a);
        System.out.println(Collections.max(Arrays.asList(b)));
    }
}
20
ответ дан 23 November 2019 в 20:51
поделиться

Библиотека Google Guava имеет методы min и max в своих классах Chars, Ints, Longs и т. Д.

Таким образом, вы можете просто использовать:

Chars.min(myarray)

Нет требуется преобразование, и предположительно это эффективно.

57
ответ дан 23 November 2019 в 20:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: