要求:
预测未来一周8.8日-8.15日数值,取上周数据8.1日-8.7日值并求出临近两天的绝对值差额
未来一周数据= 前一天数值+上涨/下跌值
8.8日数值 = 8.7日数值,如果上涨+(8.1日到8.2日绝对值的差值)
如果下降-(8.1日到8.2日绝对值的差值)
如此类推
最高点区间值 : 区间范围上值 = 8.8日数值 *( 1+2.5%)
区间范围下值 = 8.8日数值 *( 1-2.5%)
具体实现的代码如下:
public static void main(String[] args) {List<Map<String, Double>> data = new ArrayList<>();data.add(Map.of("2023年08月01日", 7.221958));data.add(Map.of("2023年08月02日", 7.231958));data.add(Map.of("2023年08月03日", 7.241958));data.add(Map.of("2023年08月04日", 7.221958));data.add(Map.of("2023年08月05日", 7.251958));data.add(Map.of("2023年08月06日", 7.261958));data.add(Map.of("2023年08月07日", 7.281958));List<Data> dataList = new ArrayList<>();dataList.add(new Data("2023年8月08日", "up"));dataList.add(new Data("2023年8月09日", "up"));dataList.add(new Data("2023年8月10日", "down"));dataList.add(new Data("2023年8月11日", "down"));dataList.add(new Data("2023年8月12日", "up"));dataList.add(new Data("2023年8月13日", "down"));dataList.add(new Data("2023年8月14日", "up"));double previousValue = data.get(data.size() - 1).values().iterator().next(); // 获取最后一个日期的数值double value = previousValue;double valueFirst = 0;LinkedList<Double> lkl = new LinkedList<>();LinkedList result = new LinkedList();for (int i = 0; i < dataList.size(); i++) {Data dataPoint = dataList.get(i);if (i == 0) {double diff = Math.abs(data.get(0).values().iterator().next() - data.get(1).values().iterator().next());if (dataPoint.getDirection().equals("up")) {value += diff;valueFirst = value;} else {value -= diff;valueFirst = value;}} else {if(i==6){double diff = Math.abs(data.get(i).values().iterator().next() - valueFirst);if (dataPoint.getDirection().equals("up")) {value += diff;} else {value -= diff;}}else{double diff = Math.abs(data.get(i).values().iterator().next() - data.get(i+1).values().iterator().next());if (dataPoint.getDirection().equals("up")) {value += diff;} else {value -= diff;}}}System.out.println(dataPoint.getDate() + " 的数值: " + value);lkl.add(value);JSONObject jsonObject = new JSONObject();jsonObject.put("datetime",dataPoint.getDate());jsonObject.put("rae",value);result.add(jsonObject);}double maxValue = Collections.max(lkl);System.out.println("得出list的最大值:"+maxValue);List<Double> resultList = new ArrayList<>();resultList.add(maxValue + 0.25);resultList.add(maxValue - 0.25);System.out.println("横线的最大值与最小值:"+resultList);JSONObject json = new JSONObject();json.put("high",maxValue + 0.25);json.put("low",maxValue - 0.25);List list = new ArrayList();list.add(json);list.add(result);System.out.println("result######"+ list);
// List<Map<String, Double>> data = new ArrayList<>();
// data.add(Map.of("2023年08月01日", 7.221958));
// data.add(Map.of("2023年08月02日", 7.231958));
// data.add(Map.of("2023年08月03日", 7.241958));
// data.add(Map.of("2023年08月04日", 7.221958));
// data.add(Map.of("2023年08月05日", 7.261958));
// data.add(Map.of("2023年08月06日", 7.271958));
// data.add(Map.of("2023年08月07日", 7.281958));
//
// List<Data> dataList = new ArrayList<>();
// dataList.add(new Data("2023年8月08日", "up"));
// dataList.add(new Data("2023年8月09日", "down"));
// dataList.add(new Data("2023年8月10日", "up"));
// dataList.add(new Data("2023年8月11日", "up"));
// dataList.add(new Data("2023年8月12日", "down"));
// dataList.add(new Data("2023年8月13日", "down"));
// dataList.add(new Data("2023年8月14日", "up"));
//
// double previousValue = data.get(data.size() - 1).values().iterator().next(); // 获取最后一个日期的数值
// double value = previousValue;
// Random random = new Random();
// for (int i = 0; i < dataList.size(); i++) {
// Data dataPoint = dataList.get(i);
//
// if (i == 0) {
// double diff = Math.abs(data.get(0).values().iterator().next() - data.get(1).values().iterator().next());
// if (dataPoint.getDirection().equals("up")) {
// value += diff;
// } else {
// value -= diff;
// }
// } else {
// if (dataPoint.getDirection().equals("up")) {
// double randomIncrement = random.nextDouble() * 0.025;
// value += randomIncrement;
// } else {
// double randomIncrement = random.nextDouble() * 0.025;
// value -= randomIncrement;
// }
// }
//
// System.out.println(dataPoint.getDate() + " 的数值: " + value);
// }}
}class Data {private String date;private String direction;public Data(String date, String direction) {this.date = date;this.direction = direction;}public String getDate() {return date;}