Удалить некоторый процент элементов из массива

#java #arrays

#java #массивы

Вопрос:

У меня есть массив неизвестной длины в java. Я хочу удалить 1 процент от общего количества элементов массива после его сортировки. Как я могу это сделать? Если я передам массив и длину функции.

 public double deleteElements(double array[], int length) {
    int trimmedLength = array.length-length;
    for (int i = 0; i < trimmedLength; i  ) {               
    }    
} 
  

Комментарии:

1. Ваша постановка проблемы немного неоднозначна. Пожалуйста, предоставьте больше информации.

2. Как сказано выше, вы хотите удалить% элементов из заголовка или хвоста массива?

3. Ваш вопрос неясен, реорганизуйте его.

4. Какой процент вам нужно удалить? Первый процент? Последний? любое последовательное значение, которое занимает 1% в массиве, используя индекс первого? Один элемент на каждые десять элементов?

Ответ №1:

Я предполагаю, что вы имеете в виду что-то вроде :

 import java.util.Arrays;

public class Test{

        public static void main(String[] args){

            double[] testArray = new double[]{0,1,2,3,4,5,6,7,8,9};

            //implement sort, if needed

            System.out.println(Arrays.toString( deleteElements(testArray, 5) ));
        }

        public static double[] deleteElements(double array[],int newLength){

            //add check array != null
            //add check length is <= array.length

            double[] returnArray = new double[newLength];

            for(int i=0;i<newLength;i  ){
              returnArray[i] = array[i];
            }

            return returnArray;
        }
}
  

Ответ №2:

Я предположил, что длина, которую вы передаете, — это процент элементов, которые вы хотите удалить из списка.

Это преобразует ваш массив в список, сортирует его и преобразует оставшийся процент обратно в возвращаемый массив.

 public double[] deleteElements(double[] doubles, int length)
  {
    List<Double> elements = Arrays.stream(doubles).boxed()
        .collect(Collectors.toList());
    Collections.sort(elements);
    int startElement = (int) (elements.size() / 100.0 * length);

    List<Double> subList = elements.subList(startElement, elements.size());

    return subList.stream().mapToDouble(d -> d).toArray();
  }