X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fengine%2FPairEntry.java;h=d779485ee2a3299ab8fd1f54421e54643a47d84b;hb=8674b09eae371994e01e0af541b546fced86c366;hp=d3fb060e1dc0570a3d02a326e0283ac8a58382cd;hpb=0d6b69d8819c937eed8a911f491146b76a9b1300;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/engine/PairEntry.java b/src/com/hughes/android/dictionary/engine/PairEntry.java index d3fb060..d779485 100644 --- a/src/com/hughes/android/dictionary/engine/PairEntry.java +++ b/src/com/hughes/android/dictionary/engine/PairEntry.java @@ -14,20 +14,20 @@ package com.hughes.android.dictionary.engine; -import com.hughes.util.StringUtil; -import com.hughes.util.raf.RAFListSerializer; -import com.hughes.util.raf.RAFListSerializerSkippable; -import com.hughes.util.raf.RAFSerializable; -import com.ibm.icu.text.Transliterator; - import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.io.PrintStream; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.regex.Pattern; +import com.hughes.util.StringUtil; +import com.hughes.util.raf.RAFListSerializerSkippable; +import com.hughes.util.raf.RAFSerializable; +import com.ibm.icu.text.Transliterator; + public class PairEntry extends AbstractEntry implements RAFSerializable, Comparable { @@ -35,7 +35,7 @@ public class PairEntry extends AbstractEntry implements RAFSerializable(1); + pairs = new ArrayList<>(1); } public PairEntry(final EntrySource entrySource, final String lang1, final String lang2) { @@ -47,9 +47,14 @@ public class PairEntry extends AbstractEntry implements RAFSerializable= 7 ? StringUtil.readVarInt(raf) : raf.readInt(); - pairs = new ArrayList(size); - for (int i = 0; i < size; ++i) { - pairs.add(new Pair(raf.readUTF(), raf.readUTF())); + // Use singletonList for better performance in common case + if (size == 1) pairs = Collections.singletonList(new Pair(raf.readUTF(), raf.readUTF())); + else + { + pairs = new ArrayList<>(size); + for (int i = 0; i < size; ++i) { + pairs.add(new Pair(raf.readUTF(), raf.readUTF())); + } } } @@ -57,10 +62,10 @@ public class PairEntry extends AbstractEntry implements RAFSerializable 0; - raf.writeUTF(pairs.get(i).lang1); - raf.writeUTF(pairs.get(i).lang2); + for (Pair p : pairs) { + assert p.lang1.length() > 0; + raf.writeUTF(p.lang1); + raf.writeUTF(p.lang2); } } @@ -192,7 +197,7 @@ public class PairEntry extends AbstractEntry implements RAFSerializable