从“统计一个字符在字符串中所有的位置”看数组的扩展问题
我们先明确一点,Java数组对象的大小是固定的,数组对象是丌能扩展的,我们利用数组复制的方法可以变通的实现数组扩展。创建数组副本的同时将数组长度增加就变通的实现了,数组的扩展。
System.arraycopy() 可以复制数组
Arrays.copyOf() 可以简便的创建数组副本
统计一个字符在字符串中所有的位置。比如"统计一个字符在字符串中所有的位置"这个字符串中的"字"出现2次,分别出现在下标4和7的位置。要求,将下标位置放入到一个int数组中,每找到一个就放入并对数组扩容。
import java.util.Arrays;public class CharCountDemo {/** * 统计一个字符在字符串中所有的位置。比如"统计一个字符在字符串中所有的位置"这个字符串中的"字"出现2次, * 分别出现在下标4和7的位置。要求,将下标位置放入到一个int数组中,每找到一个就放入并对数组扩容。 */public static void main(String[] args) {// TODO Auto-generated method stub String str="统计一个字符在字符串中所有的位置"; int[]arr=countAll(str,'字'); System.out.println(Arrays.toString(arr));}private static int[] countAll(String str, char ch) {// TODO Auto-generated method stubint []ary={};for(int i=0;i<str.length();i++){char c=str.charAt(i);if(c==ch){ary=Arrays.copyOf(ary, ary.length+1);//标记所在的位置,并存入数组ary[ary.length-1]=i;}}return ary;}}