Java数组扩容算法及Java对它的应用
Java数组扩容的原理
1)Java数组对象的大小是固定不变的,数组对象是不可扩容的。
2)利用数组复制方法(Arrays.copyOf())可以变通的实现数组扩容。
3)Arrays.copyOf() 的底层是System.arraycopy()可以复制数组。
4)Arrays.copyOf()创建数组副本的同时将数组长度增加就变通的实现了数组的扩容。
实现案例:
案例1 : 统计一个字符在字符串中的所有位置.
字符串: 统计一个字符在字符串中的所有位置
字符: ‘字’
返回: {4,7}
1 public class CountCharDemo {
2 public static void main(String[] args) {
3 char key = '字';
4 String str = "统计一个字符在字符串中的所有位置";
5 int[] count=count(str,key);
6 System.out.println(Arrays.toString(count));//[4, 7]
7 }
8 public static int[] count(String str,char key){
9 int[] count={};
10 for(int i=0;i<str.length();i++){
11 char c=str.charAt(i);
12 if(c==key){
13 //扩展数组
14 count=Arrays.copyOf(count, count.length+1);
15 //添加序号i
16 count[count.length-1]=i;
17 }
18 }
19 return count;
20 }
21 }