Index: trunk/src/org/openstreetmap/josm/actions/corrector/TagCorrector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/corrector/TagCorrector.java	(revision 19443)
+++ trunk/src/org/openstreetmap/josm/actions/corrector/TagCorrector.java	(revision 19444)
@@ -14,4 +14,5 @@
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.swing.JLabel;
@@ -32,4 +33,5 @@
 import org.openstreetmap.josm.gui.correction.TagCorrectionTable;
 import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
+import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -95,10 +97,11 @@
 
             for (Entry<OsmPrimitive, List<TagCorrection>> entry : tagCorrectionsMap.entrySet()) {
+                if (entry.getValue().isEmpty())
+                    continue;
+
                 final OsmPrimitive primitive = entry.getKey();
-                final List<TagCorrection> tagCorrections = entry.getValue();
-
-                if (tagCorrections.isEmpty()) {
-                    continue;
-                }
+                final List<TagCorrection> tagCorrections = entry.getValue().stream()
+                        .sorted((o1, o2) -> AlphanumComparator.getInstance().compare(o1.oldKey, o2.oldKey))
+                        .collect(Collectors.toList());
 
                 final JLabel propertiesLabel = new JLabel(tr("Tags of "));
@@ -112,6 +115,5 @@
                 p.add(primitiveLabel, GBC.eol());
 
-                final TagCorrectionTable table = new TagCorrectionTable(
-                        tagCorrections);
+                final TagCorrectionTable table = new TagCorrectionTable(tagCorrections);
                 final JScrollPane scrollPane = new JScrollPane(table);
                 p.add(scrollPane, GBC.eop().fill(GBC.BOTH));
@@ -121,10 +123,12 @@
 
             for (Entry<OsmPrimitive, List<RoleCorrection>> entry : roleCorrectionMap.entrySet()) {
+                if (entry.getValue().isEmpty())
+                    continue;
+
                 final OsmPrimitive primitive = entry.getKey();
-                final List<RoleCorrection> roleCorrections = entry.getValue();
-
-                if (roleCorrections.isEmpty()) {
-                    continue;
-                }
+                final List<RoleCorrection> roleCorrections = entry.getValue().stream()
+                        .sorted((o1, o2) -> DefaultNameFormatter.getInstance().getRelationComparator()
+                                .compare(o1.relation, o2.relation))
+                        .collect(Collectors.toList());
 
                 final JLabel rolesLabel = new JLabel(tr("Roles in relations referring to"));
