2016-10-07 72 views
-1

我在java中有一個未知長度的數組。 我想在排序後刪除數組總元素的1%。 我該怎麼做?如果我傳遞一個數組和一個函數的長度。從數組中刪除一些百分比的元素

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

您的問題陳述有點模棱兩可。請提供更多信息。 – Oleksandr

+0

如上所述,你想從數組的頭部還是尾部去除%的元素? – px06

+0

你的問題不清楚,重新組織它。 – Ravikumar

回答

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