参数化数据结构以保存特定大小的数组?

时间:2014-05-09 20:46:31

标签: java arrays data-structures vector

在Java中是否可以参数化数据结构,以便它只能保存一定长度的数组。我正在编写一个处理3d对象的程序,我想要一个列表,它只保存在数组中存储为3个双精度或双精度的向量[3]。下面的代码不会编译。

Vector<double[3]> myList = new Vector<double[3]>();

有没有办法限制存储在数据结构中的数组的大小?

2 个答案:

答案 0 :(得分:0)

是的,创建该数据结构的子类并覆盖该数据结构的add / put方法,在添加数组长度是否为3之前进行检查。

以下是示例:

import java.util.Vector;

public class SubClassArrayList<E> extends Vector<E> {

    public boolean add(E e , int length) {
        if (e instanceof Object[] && ((Object[]) e).length == length) {
            return super.add(e);
        }
        else return false;
    }

}

以上内容也适用于ArrayList

答案 1 :(得分:0)

除了Vishrant的答案,你可以编写一个自定义类,比如说Coord,它有一个包含双精度数组成员并使用它。

public class Coord {
   private double[] values;

   public Coord(double[] values) {
      //check whether values array has a length of 3
      this.values = values;
   }

   //add getter and setter, check the size of the input array in the setter method
}

然后,您可以在java.util。*数据结构中使用上面的类。如果要使用HashMap或HashSet,则应该实现hashCode()和equals()方法。

与问题没有直接关系,但我想说除非你想要线程安全,否则你不应该使用Vector。喜欢实现List的类。