toString 样式

最常见的样式:

public String toString() {
  return "{" +
    "hsl=" + hsl +
    ", dailyOil=" + dailyOil +
    ", dailyWater=" + dailyWater +
    ", Np=" + Np +
    ", Lp=" + Lp +
    ", year='" + year + '\'' +
    ", Wp=" + Wp +
    ", cccd=" + cccd +
    '}';
}
  • 只有 year 是 String,所以加了单引号

若是存在 double[][] 类型的就需要自己拼接了

public String toString() {
  StringBuilder result = new StringBuilder();
  result.append("{curveName=\"" + curveName + "\", coordinate=[");
  for (int i = 0; i < coordinate.length; i++) {
    result.append("[");
    for (int j = 0; j < coordinate[i].length; j++) {
      result.append(coordinate[i][j]).append(", ");
    }
    result.delete(result.length() - 2, result.length()); // 删除最后一个逗号和空格
    result.append("], ");
  }
  result.delete(result.length() - 2, result.length()); // 删除最后一个逗号和空格
  result.append("]}");
  return result.toString();
}
  • 因为这里还是用 ", coordinate=" + Arrays.toString(coordinate) 就是多个引用(内含哈希码)
    • Arrays.toString()方法对于一维基本类型数组(如double[])能够正确地打印数组的元素,但是对于二维数组(实际上是数组的数组),它只会打印每个子数组的引用,而不是子数组的内容
  • ", coordinate=" + coordinate 的话就是一个总的引用
  • 所以需要如上自行拼接

若是存在 List<CalcPredict>Map<String, double[][]> 类型的话,如:

private List<CalcPredict> calcPredict;
private Map<String, double[][]> predict;
private Map<String, double[][]> fitting;
// 其余省略
  • 也需要自己进行拼接操作:
public String toString() {
  StringBuilder result = new StringBuilder("");
  result.append("{curveName=\"" + curveName + "\", a=" + a + ", b=" + b + ", curves=\"" + curves + "\", kccl=" + kccl + ", calcPredict=" + calcPredict + ", ");

  for (Map.Entry<String, double[][]> entry : predict.entrySet()) {  result.append(entry.getKey()).append("=").append(Arrays.deepToString(entry.getValue())).append(", ");
                                                                 }
  // 删除最后一个逗号和空格
  result.delete(result.length() - 2, result.length());

  result.append(", dates=\"" + dates + "\", factor=" + factor + ", csl=" + csl + ", ");

  for (Map.Entry<String, double[][]> entry : fitting.entrySet()) { result.append(entry.getKey()).append("=").append(Arrays.deepToString(entry.getValue())).append(", ");
  }
  result.delete(result.length() - 2, result.length());

  result.append("}");
  return result.toString();
}
  • calcPredict=[CalcPredict{ ... }, CalcPredict{ ... }] 在实体类中已写好,直接用即可

  • predictfitting 就需要拼接出来,例如 fitting 按需拼接为:

    fitting=[[3575.19, 5.338201499852306], [3879.37, 5.375445406908198], [4149.5, 5.408520219890669], [4361.2, 5.434440842955079], [4618.39, 5.465931277749295]]

posted @ 2024-02-21 23:52  朱呀朱~  阅读(1)  评论(0编辑  收藏  举报