java - 如何转换列表
问题描述
我在我的项目android中使用这个hashmap。
使用此命令:
List<Map<Integer, Double>> peak = PeakDetect.peak_detection(test1,delta, indices);
其中 test1 是:
double [] test1= {16 ,1, 2, -20, 3, 12, 2, 1, 0, -1, -2 ,-3, -6, -3, -2 ,-1, 0};
我有这个结果:
Result: [{0=0.14692041925343213, 5=0.28567859299278475}, {3=0.4244367667321373}]
在该示例中,我将第一个索引存储在一个新数组中:
0 and 5
0 和 5 表示 test1 的最大值索引,3 表示 test1 的最小值索引。
我怎么能那样做?提前致谢
在此处编辑 peak_detector.java:
package com.google.android.gms.samples.vision.face.rPPG;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
public class PeakDetect {
public static <U> List<Map<U, Double>> peak_detection(List<Double> values, Double delta, List<U> indices)
{
assert(indices != null);
assert(values.size() != indices.size());
Map<U, Double> maxima = new HashMap<U, Double>();
Map<U, Double> minima = new HashMap<U, Double>();
List<Map<U, Double>> peaks = new ArrayList<Map<U, Double>>();
peaks.add(maxima);
peaks.add(minima);
Double maximum = 0.0;
Double minimum = 0.0;
U maximumPos = null;
U minimumPos = null;
boolean lookForMax = true;
Integer pos = 0;
for (Double value : values) {
if (value > maximum || maximum == null) {
maximum = value;
maximumPos = indices.get(pos);
}
if (value < minimum || minimum == null) {
minimum = value;
minimumPos = indices.get(pos);
}
if (lookForMax) {
if (value < maximum - delta) {
maxima.put(maximumPos, value);
minimum = value;
minimumPos = indices.get(pos);
lookForMax = false;
}
} else {
if (value > minimum + delta) {
minima.put(minimumPos, value);
maximum = value;
maximumPos = indices.get(pos);
lookForMax = true;
}
}
pos++;
}
return peaks;
}
}
解决方案
像这样的东西?
List<List<Integer>> indexes = peaks
.stream()
.map(p -> p.entrySet()
.stream()
.map(Map.Entry::getKey)
.collect(Collectors.toList()))
.collect(Collectors.toList());
System.out.println(indexes.get(0)); // maxima list output = [0, 5]
System.out.println(indexes.get(1)); // minima list output = [3]
推荐阅读
- javascript - 从 chrome 本地存储中保存和加载数据
- firebase - 如何从firebase auth获取用户ID作为字符串?
- javascript - GTM + JS:如何将 ID 与类别名称匹配?
- android - 如何解决空指针异常
- eclipse - 无法使用 Gradle 安装 '...\gradle-5.4.1' 运行分阶段构建操作
- netlogo - 如果变量 target = fila 1,如果 target 是 filas 中的任何一个,我如何询问一个报告 true 的条件
- regex - 如何grep一个带有斜杠的精确字符串?
- docker - 有没有办法在全局范围内设置 /dev/shm 的大小,因此不需要将 --shm-size 标志设置为 docker run 的一部分?
- xml - 如何在 SAPUI5 中的列表路径中包含参数
- reactjs - 使用样式移动按钮时,“热点”保持在原位,但按钮会移动