【问题标题】:Initializing objects into an arrayList from test class从测试类将对象初始化为 arrayList
【发布时间】:2017-04-28 04:13:45
【问题描述】:

嘿,我是 Java 新手,在使用数组时遇到了困难。我正在尝试使用数组或 arrayLists 来存储我的测试类中的值列表。但我正在研究如何将 set1 和 set2 添加到我的 arrayList 中。

我有一个测试类

Data set1 = new Data(new double[]{1, 2, 3, 4, 5});
    System.out.println("Set1: " + set1);

Data set2 = new Data(new double[]{-5, -4, -3, 1});
        System.out.println("Set2: " + set2);

然后是我的数据类

    import java.util.ArrayList;

    public class Data {

    public Data(double[] sets) {
        ArrayList<Double> sets = new ArrayList<Double>();
    }

}

【问题讨论】:

  • 您不能添加set1set2,因为它们属于Data 类型,而您的ArrayList 由于泛型而需要Double。您很可能需要一个构造函数Data(double[]),在其中传递double 数组。在那里你可以将值添加到List

标签: java arrays oop arraylist


【解决方案1】:

这是使用 Java 8 流的代码,

class Data {

    List<Double> d;

    public Data(Stream sets) {
         this.d = (List<Double>) sets.collect(Collectors.toList());
    }
}

Data setss = new Data(Stream.of("1.1","2","3.4","4","5"));
System.out.println("d list = "+setss.d);

【讨论】:

    【解决方案2】:

    也许这对你有用:

    public Data(double[] array) {
        sets = new ArrayList<Double>(Arrays.asList(array));
    }
    
    public String toString() {
        return sets.toString();
    }
    

    【讨论】:

    • 如何将 set1 解析为 toString 中的变量。 Atm 如果我尝试输出,我会得到 set1 和 set2 的地址。
    【解决方案3】:

    你的问题出在你的 Data 班级:

    import java.util.ArrayList;
    
    public class Data {
    
        public Data(double[] sets) {
            ArrayList<Double> sets = new ArrayList<Double>();
        }
    
    }
    

    sets 变量在构造函数返回后消失,因此在那里声明它是没有用的。您应该将声明移至类级别并在构造函数中为其分配正确的值:

    ArrayList<Double> sets;
    public Data(double[] sets) {
        this.sets = new ArrayList<Double>();
        for (double d : sets) {
            this.sets.add(d);
        }
    }
    

    既然要打印Data,就需要重写toString方法:

    @Override
    public String toString() {
        return sets.toString();
    }
    

    【讨论】:

      【解决方案4】:

      首先创建数据类为:

      class Data
      {
         ArrayList<Double> obj;
      
         Data(Double var[])
         {
            obj=new  ArrayList<Double>();
      
            for(int i=0;i<var.length;i++)
            {
                 obj.add(var[i]);
            }
         }
      }
      

      现在创建这个数据类的对象:

      Double val1[]={1.0,2.0,3.0,4.0};
      Data set1=new Data(val1);
      
      Double val2[]={1.0,25.0,36.0,44.0};
      Data set2=new Data(val2);
      

      现在将这些数据类的对象添加到arraylist中:

      ArrayList<Data> sets=new ArrayList<Data>();
      sets.add(set1);
      sets.add(set2);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 2016-07-13
        • 2011-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多