一个项目中偶遇的简单算法,个人觉得还不错,虽不常用,也记录在此吧。
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 }
时间: 2024-10-09 02:26:41