我怎样才能得到一个数组,一个集合,或在Java中的string的大小?
有什么不同的方式可以访问数组的长度,集合( List
, Set
等)和String
对象? 为什么不一样?
简略:
对于一个数组:使用.length
。
对于Collection
(或Map
):使用.size()
。
对于CharSequence
(包括CharBuffer
, Segment
, String
, StringBuffer
和StringBuilder
):使用.length()
。
数组
可以使用数组的.length
属性来访问它。 尽pipe数组是一个dynamic创build的Object
,但length
属性的任务是由Java语言规范第10.3节定义的:
数组由数组创buildexpression式(第15.10节)或数组初始化器(第10.6节)创build 。
数组创buildexpression式指定元素types,嵌套数组的级数以及至less一个嵌套级别的数组长度。 数组的长度可用作最终实例variables
length
。数组初始化器创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的情况下。 列或行可能并不总是排队。
集合( Set
, List
等)
对于实现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