是否可以将2D数组作为成员属性但不在构造函数中初始化?

时间:2018-06-13 20:24:43

标签: java arrays initialization declaration

问题是我有一个我需要阅读的文本文件,其中包含字符,我需要在类内部将其构建为2D数组。但是,因为当我初始化时,我还必须指定像这样的值:

int[] array;
array = new int[] {2, 7, 9};

由于在读取文件之前我不知道数组的大小,我可以创建一个作为成员,但只能作为本地成员。在此,我使用arrayLists,这是不可取的。我错过了什么吗?

感谢。

2 个答案:

答案 0 :(得分:2)

ArrayList是这个问题的最佳选择,因为ArrayList的大小是可变的,这意味着无论数据大小如何,它总是会改变它的大小以匹配它包含的元素数量。

Here's有关创建和使用2D ArrayLists的更多细节。

希望这有帮助。

答案 1 :(得分:1)

Stack Class:
public class Stack {
        private ArrayList _arrayList = new ArrayList();
        public void Push(object obj) {
            if (obj is null) {
                throw new InvalidOperationException();
            }
            else {
                _arrayList.Add(obj);
            }
        }

        public object Pop() {
            if (_arrayList is null) {
                throw new InvalidOperationException();
            }
            else {
                var top = _arrayList.Count;
                _arrayList.Remove(top);

                return top;
            }
        }

        public void Clear() {
            for (int i = 0; i < _arrayList.Count; i++) {
                _arrayList.Remove(i);
            }
        }
    }

在Java 9之前的OR:

class Program {
        static void Main(string[] args) {
            var stack = new Stack();

            stack.Push(5);
            stack.Push(1);
            stack.Push(2);
            stack.Push(4);
            stack.Push(3);

            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());

        }
    }

在Java 9中的OR:

List<Integer> array = new ArrayList<>();

array.add(2);
array.add(7);
array.add(9);