从“统计一个字符在字符串中所有的位置”看数组的扩展有关问题
从“统计一个字符在字符串中所有的位置”看数组的扩展问题
我们先明确一点,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 stub int []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; } }