Skip to content

Commit 0a12018

Browse files
Ali Utku SelenJean-Baptiste Queru
authored andcommitted
Change StringTokenizer to TextUtils.StringSplitter
Replacing StringTokenizer to TextUtils.StringSplitter, since TextUtils.StringSplitter is more suitable for basic splitting tasks. Also increased initial values for HashMap and StringBuilders to avoid unnecessary buffer enlargement operations. This improves the performance of these operations. Change-Id: If9a5b68e6596ba9a6d29597876b6164ef34b57ac
1 parent 3754899 commit 0a12018

File tree

1 file changed

+26
-25
lines changed

1 file changed

+26
-25
lines changed

core/java/android/hardware/Camera.java

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import android.os.Looper;
2727
import android.os.Message;
2828
import android.util.Log;
29+
import android.text.TextUtils;
2930
import android.view.Surface;
3031
import android.view.SurfaceHolder;
3132

@@ -34,7 +35,6 @@
3435
import java.util.ArrayList;
3536
import java.util.HashMap;
3637
import java.util.List;
37-
import java.util.StringTokenizer;
3838
import java.util.concurrent.locks.ReentrantLock;
3939

4040
/**
@@ -1905,7 +1905,7 @@ public class Parameters {
19051905
private HashMap<String, String> mMap;
19061906

19071907
private Parameters() {
1908-
mMap = new HashMap<String, String>();
1908+
mMap = new HashMap<String, String>(64);
19091909
}
19101910

19111911
/**
@@ -1929,7 +1929,7 @@ public void dump() {
19291929
* semi-colon delimited key-value pairs
19301930
*/
19311931
public String flatten() {
1932-
StringBuilder flattened = new StringBuilder();
1932+
StringBuilder flattened = new StringBuilder(128);
19331933
for (String k : mMap.keySet()) {
19341934
flattened.append(k);
19351935
flattened.append("=");
@@ -1952,9 +1952,9 @@ public String flatten() {
19521952
public void unflatten(String flattened) {
19531953
mMap.clear();
19541954

1955-
StringTokenizer tokenizer = new StringTokenizer(flattened, ";");
1956-
while (tokenizer.hasMoreElements()) {
1957-
String kv = tokenizer.nextToken();
1955+
TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(';');
1956+
splitter.setString(flattened);
1957+
for (String kv : splitter) {
19581958
int pos = kv.indexOf('=');
19591959
if (pos == -1) {
19601960
continue;
@@ -3488,11 +3488,11 @@ public boolean isVideoStabilizationSupported() {
34883488
private ArrayList<String> split(String str) {
34893489
if (str == null) return null;
34903490

3491-
// Use StringTokenizer because it is faster than split.
3492-
StringTokenizer tokenizer = new StringTokenizer(str, ",");
3491+
TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(',');
3492+
splitter.setString(str);
34933493
ArrayList<String> substrings = new ArrayList<String>();
3494-
while (tokenizer.hasMoreElements()) {
3495-
substrings.add(tokenizer.nextToken());
3494+
for (String s : splitter) {
3495+
substrings.add(s);
34963496
}
34973497
return substrings;
34983498
}
@@ -3502,11 +3502,11 @@ private ArrayList<String> split(String str) {
35023502
private ArrayList<Integer> splitInt(String str) {
35033503
if (str == null) return null;
35043504

3505-
StringTokenizer tokenizer = new StringTokenizer(str, ",");
3505+
TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(',');
3506+
splitter.setString(str);
35063507
ArrayList<Integer> substrings = new ArrayList<Integer>();
3507-
while (tokenizer.hasMoreElements()) {
3508-
String token = tokenizer.nextToken();
3509-
substrings.add(Integer.parseInt(token));
3508+
for (String s : splitter) {
3509+
substrings.add(Integer.parseInt(s));
35103510
}
35113511
if (substrings.size() == 0) return null;
35123512
return substrings;
@@ -3515,23 +3515,23 @@ private ArrayList<Integer> splitInt(String str) {
35153515
private void splitInt(String str, int[] output) {
35163516
if (str == null) return;
35173517

3518-
StringTokenizer tokenizer = new StringTokenizer(str, ",");
3518+
TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(',');
3519+
splitter.setString(str);
35193520
int index = 0;
3520-
while (tokenizer.hasMoreElements()) {
3521-
String token = tokenizer.nextToken();
3522-
output[index++] = Integer.parseInt(token);
3521+
for (String s : splitter) {
3522+
output[index++] = Integer.parseInt(s);
35233523
}
35243524
}
35253525

35263526
// Splits a comma delimited string to an ArrayList of Float.
35273527
private void splitFloat(String str, float[] output) {
35283528
if (str == null) return;
35293529

3530-
StringTokenizer tokenizer = new StringTokenizer(str, ",");
3530+
TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(',');
3531+
splitter.setString(str);
35313532
int index = 0;
3532-
while (tokenizer.hasMoreElements()) {
3533-
String token = tokenizer.nextToken();
3534-
output[index++] = Float.parseFloat(token);
3533+
for (String s : splitter) {
3534+
output[index++] = Float.parseFloat(s);
35353535
}
35363536
}
35373537

@@ -3558,10 +3558,11 @@ private int getInt(String key, int defaultValue) {
35583558
private ArrayList<Size> splitSize(String str) {
35593559
if (str == null) return null;
35603560

3561-
StringTokenizer tokenizer = new StringTokenizer(str, ",");
3561+
TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(',');
3562+
splitter.setString(str);
35623563
ArrayList<Size> sizeList = new ArrayList<Size>();
3563-
while (tokenizer.hasMoreElements()) {
3564-
Size size = strToSize(tokenizer.nextToken());
3564+
for (String s : splitter) {
3565+
Size size = strToSize(s);
35653566
if (size != null) sizeList.add(size);
35663567
}
35673568
if (sizeList.size() == 0) return null;

0 commit comments

Comments
 (0)