Mak*_*oto 16 java arrays string collections
什么是我可以访问的阵列的长度,集合(的不同的方式List
,Set
等),和一个String
对象?它为什么不同?
Mak*_*oto 32
对于数组:使用.length
.
对于Collection
(或Map
):使用.size()
.
对于一个CharSequence
(其包括CharBuffer
,Segment
,String
,StringBuffer
,和StringBuilder
):使用.length()
.
可以使用数组上的.length
属性来访问它.尽管数组是动态创建的Object
,但length
属性的任务是由Java语言规范§10.3定义的:
数组由数组创建表达式(第15.10节)或数组初始值设定项(第10.6节)创建.
数组创建表达式指定至少一个嵌套级别的元素类型,嵌套数组的级别数和数组的长度.数组的长度可用作最终实例变量
length
.数组初始值设定项创建一个数组并为其所有组件提供初始值.
由于数组的长度在没有创建新数组实例的情况下.length
无法更改,因此重复访问将不会更改该值,无论对数组实例执行了什么操作(除非其引用替换为不同大小的数组).
例如,要获得声明的一维数组的长度,可以写下:
double[] testScores = new double[] {100.0, 97.3, 88.3, 79.9};
System.out.println(testScores.length); // prints 4
Run Code Online (Sandbox Code Playgroud)
要在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)
Run Code Online (Sandbox Code Playgroud)
这一点很重要,特别是在锯齿状阵列的情况下; 列或行可能并不总是排队.
Set
,List
等)对于实现Collection
接口的每个对象,它们都有一个调用的方法size()
,用于访问集合的整体大小.
与数组不同,集合的长度不固定,并且可以随时添加或删除元素.size()
当且仅当列表本身添加了任何内容时,调用才会产生非零结果.
例:
List<String> shoppingList = new ArrayList<>();
shoppingList.add("Eggs");
System.out.println(shoppingList.size()); // prints 1
Run Code Online (Sandbox Code Playgroud)
某些集合可能会拒绝添加元素,无论是因为它null
还是重复(在a的情况下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
Run Code Online (Sandbox Code Playgroud)
访问a 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
Run Code Online (Sandbox Code Playgroud)
*: Collection
没有get
在其界面中定义的方法.
另外,a Map
不是a Collection
,但它也有一个size()
定义的方法.这只是返回包含在中的键值对的数量Map
.
String
A String
有一个定义的方法length()
.它的作用是打印该实例中存在的字符数String
.
例:
System.out.println("alphabet".length()); // prints 8
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17461 次 |
最近记录: |