【问题标题】:storing an array in an arraylist java [closed]在arraylist java中存储一个数组[关闭]
【发布时间】:2016-08-01 23:46:23
【问题描述】:

我一直在尝试使用类似于以下的方法将数组存储在数组列表中:

static ArrayList<double []> Shapes;
public static void Test(){
    double [] Test = new double [2];
    Test[0] = 1;
    Test[1] = 2;
    Shapes.add(Test);
}

我不确定这是否是您可以做的事情,但如果有人知道如何解决这个问题,将不胜感激。

【问题讨论】:

  • 问题是:你想做什么?
  • 如果您想知道您是否可以做到这一点,请尝试编译您的代码,看看是否有错误。
  • 我想要一个包含不同形状信息的数组列表。比如一个边长10cm的正方形,周长40cm,面积100cm
  • @AJNeufeld 这个问题是关于多次重新添加相同的数组引用。 OP 在这里没有做类似的事情。

标签: java arrays


【解决方案1】:

这是我猜的最简单的方法:

new ArrayList<Double>(Arrays.asList(Test))

【讨论】:

  • 这并不能真正回答 OP 的问题。
【解决方案2】:

基本上,这是行不通的,因为您需要在某些时候调用 = new ArrayList&lt;double[]&gt;();(或者在某些 java 版本中没有 double[])。

如果您想存储有关不同形状的信息,您应该考虑为它们创建一个类,然后存储该类的实例。

【讨论】:

    【解决方案3】:

    您的代码在 Java 语法中看起来几乎是正确的,尽管需要更改样式,因为 Java 约定是对变量和方法使用小写首字母。其他发帖者指出了创建数组时缺少的“新 ArrayList”。

    问题在于,从面向对象设计的角度来看,使用 double[] 保存关于 不同 形状的信息并不是好的设计。我认为你想要的是 ShapeInfo 的 ArrayList 而不是 double [] 的 ArrayList。 ShapeInfo 可以是一个可以由各种类实现的接口。像这样的东西将允许您为每个形状使用不同的信息参数,并为所有可用于循环的形状使用通用方法 (getSummary)。

    import java.util.ArrayList;
    import java.util.List;
    
    public class Shapes {
        private static List<ShapeInfo> shapes;
    
        public static void main(String[] args) {
            shapes = new ArrayList<>();
            ShapeInfo info = new CircleInfo(1, 2, 3);
            shapes.add(info);
            // Check what's there
            for (ShapeInfo shape : shapes) {
                System.out.println(shape.getSummary());
            }
        }
    }
    
    interface ShapeInfo {
        String getSummary();
    }
    
    class CircleInfo implements ShapeInfo {
        private double centreX, centreY, radius;
    
        public CircleInfo(double centreX, double centreY, double radius) {
            this.centreX = centreX;
            this.centreY = centreY;
            this.radius = radius;
        }
    
        @Override
        public String getSummary() {
            return "Centre is at (" + centreX + "," + centreY + ") and radius is " + radius;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 2015-02-24
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      相关资源
      最近更新 更多