//根据动态获取的时间天数,动态的下标元素不加入计算求和,计算对应的时间系数,花了不少时间琢磨,做个笔记.
1 //根据动态下标,计算时间系数
2 List<List<Float>> timeModulus = new ArrayList<>();//系数的---集合的集合
3 int k = 0;//计算当前--集合的集合-->的索引
4 for(Object obj: subArraydaysList){
5 Float[] aryItem = (Float[]) obj;
6 Float sum = (float) 0;
7 //下标的集合的集合
8 List<List<Integer>> sameTimesubscriptList = new ArrayList<>();
9 for (Object object : sameTimeObj) {
10 Integer[] arr = (Integer[]) object;
11 List<Integer> subList = new ArrayList<>();
12 for (int i = 0; i < arr.length; i++) {
13 // System.out.println("相同的开始时间下标"+arr[i] + ",");
14 subList.add(arr[i]);
15 }
16 sameTimesubscriptList.add(subList);
17 // System.out.println("subList"+subList);
18 }
19 for(int i = 0; i < aryItem.length; i++){
20 sum = sum + aryItem[i];//求总和
21 }
22 //下标的集合
23 List<Integer> subscriptList = sameTimesubscriptList.get(k);
24 //下标的数组
25 Integer[] subscriptArr = new Integer[subscriptList.size()];
26 for (int j = 0; j < subscriptList.size(); j++) {
27 subscriptArr[j] = subscriptList.get(j);//赋值
28 }
29 //根据下标减去不需要计算的元素
30 for(Integer subscript:subscriptArr){
31 sum = sum - aryItem[subscript];//所需要的总和
32 }
33 //系数集合
34 List<Float> subtimeModulus = new ArrayList<>();
35 for(int i = 0; i < aryItem.length; i++){
36 subtimeModulus.add(aryItem[i]/sum);
37 }
38 System.out.println("subtimeModulus"+subtimeModulus);
39 timeModulus.add(subtimeModulus);
40 System.out.println("sum"+sum);
41 k++;
42 }