#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();
}