我在java中有一个未知长度的数组。 我想在排序后删除数组总元素的1%。 我怎样才能做到这一点?如果我将数组和长度传递给函数。
public double deleteElements(double array[], int length) {
int trimmedLength = array.length-length;
for (int i = 0; i < trimmedLength; i++) {
}
}
答案 0 :(得分:0)
我认为你的意思是:
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;
}
}
答案 1 :(得分:0)
我假设您传入的长度是您要从列表中删除的元素的百分比。
这会将您的数组转换为列表,对其进行排序,并将剩余的百分比转换回返回的数组。
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();
}