1. 程式人生 > >從一組集合中獲取,分多次取集合中的每段數據中的最大值,重組成一個新的集合。

從一組集合中獲取,分多次取集合中的每段數據中的最大值,重組成一個新的集合。

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 static
final 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, int
space) 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 }

從一組集合中獲取,分多次取集合中的每段數據中的最大值,重組成一個新的集合。