Skip to content
This repository was archived by the owner on Oct 21, 2020. It is now read-only.

Commit aed1d31

Browse files
committed
1 parent 5d5218b commit aed1d31

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

src/main/java/com/github/difflib/DiffUtils.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
import com.github.difflib.patch.Delta;
2626
import com.github.difflib.patch.Patch;
2727
import com.github.difflib.patch.PatchFailedException;
28+
import java.util.ArrayList;
2829
import java.util.Arrays;
2930
import java.util.Collections;
30-
import java.util.LinkedList;
3131
import java.util.List;
3232
import java.util.Objects;
3333
import java.util.function.BiPredicate;
@@ -111,8 +111,8 @@ public static <T> Patch<T> diff(List<T> original, List<T> revised,
111111
* @return
112112
*/
113113
public static Patch<String> diffInline(String original, String revised) throws DiffException {
114-
LinkedList<String> origList = new LinkedList<>();
115-
LinkedList<String> revList = new LinkedList<>();
114+
List<String> origList = new ArrayList<>();
115+
List<String> revList = new ArrayList<>();
116116
for (Character character : original.toCharArray()) {
117117
origList.add(character.toString());
118118
}

src/main/java/com/github/difflib/patch/Patch.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.util.ArrayList;
2626
import java.util.Collections;
2727
import static java.util.Comparator.comparing;
28-
import java.util.LinkedList;
2928
import java.util.List;
3029
import java.util.ListIterator;
3130

@@ -37,16 +36,24 @@
3736
*/
3837
public final class Patch<T> {
3938

40-
private final List<Delta<T>> deltas = new LinkedList<>();
39+
private final List<Delta<T>> deltas;
4140

41+
public Patch() {
42+
this(10);
43+
}
44+
45+
public Patch(int estimatedPatchSize) {
46+
deltas = new ArrayList<>(estimatedPatchSize);
47+
}
48+
4249
/**
4350
* Apply this patch to the given target
4451
*
4552
* @return the patched text
4653
* @throws PatchFailedException if can't apply patch
4754
*/
4855
public List<T> applyTo(List<T> target) throws PatchFailedException {
49-
List<T> result = new LinkedList<>(target);
56+
List<T> result = new ArrayList<>(target);
5057
ListIterator<Delta<T>> it = getDeltas().listIterator(deltas.size());
5158
while (it.hasPrevious()) {
5259
Delta<T> delta = it.previous();
@@ -62,7 +69,7 @@ public List<T> applyTo(List<T> target) throws PatchFailedException {
6269
* @return the restored text
6370
*/
6471
public List<T> restore(List<T> target) {
65-
List<T> result = new LinkedList<>(target);
72+
List<T> result = new ArrayList<>(target);
6673
ListIterator<Delta<T>> it = getDeltas().listIterator(deltas.size());
6774
while (it.hasPrevious()) {
6875
Delta<T> delta = it.previous();
@@ -96,7 +103,7 @@ public String toString() {
96103
}
97104

98105
public static <T> Patch<T> generate(List<T> original, List<T> revised, List<Change> changes) {
99-
Patch<T> patch = new Patch<>();
106+
Patch<T> patch = new Patch<>(changes.size());
100107
for (Change change : changes) {
101108
Chunk<T> orgChunk = new Chunk<>(change.startOriginal, new ArrayList<>(original.subList(change.startOriginal, change.endOriginal)));
102109
Chunk<T> revChunk = new Chunk<>(change.startRevised, new ArrayList<>(revised.subList(change.startRevised, change.endRevised)));

src/main/java/com/github/difflib/text/DiffRowGenerator.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -315,17 +315,19 @@ private List<DiffRow> generateInlineDiffs(Delta<String> delta) throws DiffExcept
315315
List<String> rev = StringUtils.normalize(delta.getRevised().getLines());
316316
List<String> origList;
317317
List<String> revList;
318+
String joinedOrig = String.join("\n", orig);
319+
String joinedRev = String.join("\n", rev);
318320

319321
if (inlineDiffByWord) {
320-
origList = splitStringPreserveDelimiter(String.join("\n", orig));
321-
revList = splitStringPreserveDelimiter(String.join("\n", rev));
322+
origList = splitStringPreserveDelimiter(joinedOrig);
323+
revList = splitStringPreserveDelimiter(joinedRev);
322324
} else {
323-
origList = new LinkedList<>();
324-
revList = new LinkedList<>();
325-
for (Character character : String.join("\n", orig).toCharArray()) {
325+
origList = new ArrayList<>(joinedOrig.length());
326+
revList = new ArrayList<>(joinedRev.length());
327+
for (Character character : joinedOrig.toCharArray()) {
326328
origList.add(character.toString());
327329
}
328-
for (Character character : String.join("\n", rev).toCharArray()) {
330+
for (Character character : joinedRev.toCharArray()) {
329331
revList.add(character.toString());
330332
}
331333
}

0 commit comments

Comments
 (0)