diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java b/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java
index d5b753a0103..ec9aecfa11f 100644
--- a/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java
+++ b/icu4j/main/classes/core/src/com/ibm/icu/text/ListFormatter.java
@@ -6,6 +6,7 @@
*/
package com.ibm.icu.text;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
@@ -32,6 +33,7 @@ final public class ListFormatter {
private final String start;
private final String middle;
private final String end;
+ private final ULocale locale;
/**
* Internal: Create a ListFormatter from component strings,
@@ -52,10 +54,15 @@ final public class ListFormatter {
* @internal
*/
public ListFormatter(String two, String start, String middle, String end) {
+ this(two, start, middle, end, null);
+ }
+
+ private ListFormatter(String two, String start, String middle, String end, ULocale locale) {
this.two = two;
this.start = start;
this.middle = middle;
this.end = end;
+ this.locale = locale;
}
/**
@@ -138,6 +145,28 @@ final public class ListFormatter {
}
return format2(end, result, it.next());
}
+
+ /**
+ * Returns the pattern to use for a particular item count.
+ * @param count the item count.
+ * @return the pattern with {0}, {1}, {2}, etc.
+ */
+ public String createPatternForNumItems(int count) {
+ ArrayList list = new ArrayList();
+ for (int i = 0; i < count; i++) {
+ list.add(String.format("{%d}", i));
+ }
+ return format(list);
+ }
+
+ /**
+ * Returns the locale of this object.
+ * @deprecated
+ * @internal
+ */
+ public ULocale getLocale() {
+ return locale;
+ }
private String format2(String pattern, Object a, Object b) {
int i0 = pattern.indexOf("{0}");
@@ -183,7 +212,8 @@ final public class ListFormatter {
r.getWithFallback("2").getString(),
r.getWithFallback("start").getString(),
r.getWithFallback("middle").getString(),
- r.getWithFallback("end").getString());
+ r.getWithFallback("end").getString(),
+ ulocale);
}
}
diff --git a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java
index 803df536f2b..dd3418eef2c 100644
--- a/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java
+++ b/icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/ListFormatterTest.java
@@ -111,6 +111,20 @@ public class ListFormatterTest extends TestFmwk {
list.add("C");
assertEquals("list", "A, B, and C", listFormatter.format(list));
}
+
+ public void TestCreatePatternForNumItems() {
+ ListFormatter listFormatter = ListFormatter.getInstance(ULocale.ENGLISH);
+ assertEquals(
+ "createPatternForNumItems",
+ "{0}, {1}, and {2}",
+ listFormatter.createPatternForNumItems(3));
+
+ }
+
+ public void TestGetLocale() {
+ assertEquals(
+ "getLocale", ULocale.ENGLISH, ListFormatter.getInstance(ULocale.ENGLISH).getLocale());
+ }
private boolean isDefaultLocaleEnglishLike() {
ULocale defaultLocale = ULocale.getDefault(ULocale.Category.FORMAT);