從一組集合中獲取,分多次取集合中的每段數據中的最大值,重組成一個新的集合。
阿新 • • 發佈:2017-12-02
clas pub 處理 oat private color andro sublist roi
一個項目中偶遇的簡單算法,個人覺得還不錯,雖不常用,也記錄在此吧。
1 package huolongluo.qihuo.util; 2 3 import android.util.Log; 4 5 import java.util.ArrayList; 6 import java.util.Collections; 7 import java.util.List; 8 9 /** 10 * Created by 火龍裸先生 on 2017/11/13. 11 */ 12 13 public class ListUtils 14 { 15 private staticfinal String TAG = "ListUtils"; 16 /** 17 * 從一個集合裏面,從0位置開始, 18 * 每次從集合截取指定長度的一段集合,取出其中的最大值。 19 * 最終把每次拿到的最大值,形成一個新的集合作為返回值。 20 * 21 * @param oldList 待處理的集合 22 * @param space 每次從老集合中取多少個值進行比較 23 */ 24 public static List<Float> getNewList(List<Float> oldList, intspace) 25 { 26 Log.e(TAG, "===============數據源==============" + oldList); 27 28 List<Float> last = new ArrayList<>(); // 數據源末尾多出來的幾個數 29 30 int index = 0; 31 for (int i = 0; i < oldList.size(); i++) 32 { 33 if (index + space < oldList.size())34 { 35 Log.e(TAG, "==========截取到的是======" + oldList.subList(index, index + space)); 36 last.add(Collections.max(oldList.subList(index, index + space))); 37 } 38 else 39 { 40 if (index < oldList.size()) 41 { 42 last.add(Collections.max(oldList.subList(index, oldList.size()))); 43 Log.e(TAG, "********末尾集合********" + oldList.subList(index, oldList.size())); 44 } 45 } 46 index = index + space; 47 } 48 Log.e(TAG, "=================最終結果=============" + last); 49 Log.e(TAG, "=================最終結果===條數==========" + last.size()); 50 51 return last; 52 } 53 }
從一組集合中獲取,分多次取集合中的每段數據中的最大值,重組成一個新的集合。