diff --git a/src/main/java/net/sf/jabref/logic/bibtex/BibtexEntryWriter.java b/src/main/java/net/sf/jabref/logic/bibtex/BibtexEntryWriter.java index 7e488b1ee14..770241a1a19 100644 --- a/src/main/java/net/sf/jabref/logic/bibtex/BibtexEntryWriter.java +++ b/src/main/java/net/sf/jabref/logic/bibtex/BibtexEntryWriter.java @@ -32,9 +32,9 @@ public class BibtexEntryWriter { BibtexEntryWriter.tagDisplayNameMap.put("UNKNOWN", "UNKNOWN"); } - private static final Map requiredFieldsSorted = new HashMap<>(); + private static final Map> requiredFieldsSorted = new HashMap<>(); - private static final Map optionalFieldsSorted = new HashMap<>(); + private static final Map> optionalFieldsSorted = new HashMap<>(); /** @@ -112,7 +112,7 @@ private void writeRequiredFieldsFirstOptionalFieldsSecondRemainingFieldsThird(Bi writtenFields.add("title"); if (entry.getRequiredFields() != null) { - String[] requiredFields = getRequiredFieldsSorted(entry); + List requiredFields = getRequiredFieldsSorted(entry); for (String value : requiredFields) { if (!writtenFields.contains(value)) { // If field appears both in req. and opt. don't repeat. hasWritten = hasWritten | writeField(entry, out, value, hasWritten); @@ -123,7 +123,7 @@ private void writeRequiredFieldsFirstOptionalFieldsSecondRemainingFieldsThird(Bi // Then optional fields if (entry.getOptionalFields() != null) { - String[] optionalFields = getOptionalFieldsSorted(entry); + List optionalFields = getOptionalFieldsSorted(entry); for (String value : optionalFields) { if (!writtenFields.contains(value)) { // If field appears both in req. and opt. don't repeat. hasWritten = hasWritten | writeField(entry, out, value, hasWritten); @@ -150,28 +150,28 @@ private void writeRequiredFieldsFirstOptionalFieldsSecondRemainingFieldsThird(Bi out.write((hasWritten ? Globals.NEWLINE : "") + '}' + Globals.NEWLINE); } - private String[] getRequiredFieldsSorted(BibtexEntry entry) { + private List getRequiredFieldsSorted(BibtexEntry entry) { String entryTypeName = entry.getType().getName(); - String[] sortedFields = requiredFieldsSorted.get(entryTypeName); + List sortedFields = requiredFieldsSorted.get(entryTypeName); // put into chache if necessary if (sortedFields == null) { - sortedFields = entry.getRequiredFields().stream().toArray(size -> new String[size]); - Arrays.sort(sortedFields); + sortedFields = new ArrayList(entry.getRequiredFields()); + Collections.sort(sortedFields); requiredFieldsSorted.put(entryTypeName, sortedFields); } return sortedFields; } - private String[] getOptionalFieldsSorted(BibtexEntry entry) { + private List getOptionalFieldsSorted(BibtexEntry entry) { String entryTypeName = entry.getType().getName(); - String[] sortedFields = optionalFieldsSorted.get(entryTypeName); + List sortedFields = optionalFieldsSorted.get(entryTypeName); // put into chache if necessary if (sortedFields == null) { - sortedFields = entry.getOptionalFields().stream().toArray(size -> new String[size]); - Arrays.sort(sortedFields); + sortedFields = new ArrayList(entry.getOptionalFields()); + Collections.sort(sortedFields); optionalFieldsSorted.put(entryTypeName, sortedFields); }