私はAndroidデバイス用のアプリを作っています。私のアプリには、それぞれ3200回反復する2つの「forループ」があり、53 KBの.txtファイル(3200行を含む)にアクセスし、反復ごとに1行ずつ文字列を各行と比較する関数があります。「forループ」には、BufferedReader()、InputStreamReader()、InputStream()、StringTokenizer()も含まれています。そのため、エミュレーターでアプリを実行すると、その関数が処理されるまでに約8秒かかります。これは受け入れられません。必要な時間を0.5秒、または最大に短縮するにはどうすればよいですか。1秒?ありがとう!編集:これが私のプログラムの一部で、2つのforループがあります:
else if(a==2){
String z="";
try{
InputStream is = getAssets().open("USCOUNTIES.txt");
InputStreamReader iz=new InputStreamReader(is);
BufferedReader bis = new BufferedReader(iz);
int v=0;
v=count("USCOUNTIES.txt");//counts number of lines in the .txt file
//finding no. of counties to be displayed
int counter=0;
String pos;
pos=Integer.toString(position);
try{
for(int i=0;i<v;i++){
z=bis.readLine();
//int x=pos.length();
boolean a;
//using stringtokenizer
StringTokenizer st = new StringTokenizer(z, ",");
String substring;
substring=(String) st.nextElement();
a=substring.equals(pos);
if(a==true){
counter=counter+1;
}
}}catch(Exception e){e.printStackTrace();}
String array1[]=new String[counter];
try{
InputStream ig = getAssets().open("USCOUNTIES.txt");
InputStreamReader ia=new InputStreamReader(ig);
BufferedReader bos = new BufferedReader(ia);
int j=0;
for(int i=0;i<v;i++){
z=bos.readLine();
String[] split = z.split(",");
if(split[0].equals(pos)){
array1[j]=split[1];
j=j+1;
}
}}
catch(Exception e){e.printStackTrace();}