我怎样才能得到一个数组,一个集合,或在Java中的string的大小?

有什么不同的方式可以访问数组的长度,集合( ListSet等)和String对象? 为什么不一样?

简略:

对于一个数组:使用.length

对于Collection (或Map ):使用.size()

对于CharSequence (包括CharBufferSegmentStringStringBufferStringBuilder ):使用.length()


数组

可以使用数组的.length属性来访问它。 尽pipe数组是一个dynamic创build的Object ,但length属性的任务是由Java语言规范第10.3节定义的:

数组由数组创buildexpression式(第15.10节)或数组初始化器(第10.6节)创build 。

数组创buildexpression式指定元素types,嵌套数组的级数以及至less一个嵌套级别的数组长度。 数组的长度可用作最终实例variableslength

数组初始化器创build一个数组并为其所有组件提供初始值。

由于在创build新的数组实例的情况下,数组的长度不能改变,所以.length重复访问将不会改变该值 ,而不pipe数组实例做了什么(除非它的引用被replace为不同大小的数组)。

作为一个例子,为了得到一个声明的一维数组的长度,可以这样写:

 double[] testScores = new double[] {100.0, 97.3, 88.3, 79.9}; System.out.println(testScores.length); // prints 4 

为了在n维数组中获得长度,需要记住他们一次访问数组的一个维度。

这是一个二维数组的例子。

 int[][] matrix = new int[][] { {1, 2, 3, 4}, {-1, 2, -3, 4}, {1, -2, 3, -4} }; System.out.println(matrix.length); // prints 3 (row length or the length of the array that holds the other arrays) System.out.println(matrix[0].length); // prints 4 (column length or the length of the array at the index 0) 

这对使用很重要,特别是在锯齿状arrays的情况下。 列或行可能并不总是排队。

集合( SetList等)

对于实现Collection接口的每个对象,它们都会有一个名为size()方法来访问集合的整体大小。

与数组不同,集合不是固定的长度 ,并且可以随时添加或删除元素。 调用size()会产生一个非零的结果,当且仅当有任何东西添加到列表本身。

例:

 List<String> shoppingList = new ArrayList<>(); shoppingList.add("Eggs"); System.out.println(shoppingList.size()); // prints 1 

某些集合可能会拒绝添加元素,或者是因为它是null ,或者是重复的(在Set的情况下)。 在这种情况下,重复添加集合不会导致大小增加。

例:

 Set<String> uniqueShoppingList = new HashSet<>(); uniqueShoppingList.add("Milk"); System.out.println(uniqueShoppingList.size()); // prints 1 uniqueShoppingList.add("Milk"); System.out.println(uniqueShoppingList.size()); // prints 1 

访问List<List<Object>> *的大小的方式与锯齿形数组类似:

 List<List<Integer>> oddCollection = new ArrayList<>(); List<Integer> numbers = new ArrayList<Integer>() {{ add(1); add(2); add(3); }}; oddCollection.add(numbers); System.out.println(oddCollection.size()); // prints 1 System.out.println(oddCollection.get(0).size()); // prints 3 

*: Collection没有在其接口中定义的get方法。

顺便说一下, Map不是一个Collection ,但它也有一个size()方法定义。 这只是返回包含在Map的键值对的数量。

String

一个String有一个定义的方法length() 。 它所做的是打印该String实例中存在的字符数。

例:

 System.out.println("alphabet".length()); // prints 8