从数组中删除一些百分比的元素

时间:2016-10-07 10:15:48

标签: java arrays

我在java中有一个未知长度的数组。 我想在排序后删除数组总元素的1%。 我怎样才能做到这一点?如果我将数组和长度传递给函数。

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

2 个答案:

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