当前位置: 首页 > 工具软件 > Country List > 使用案例 >

java list<string> 排序_如何对List <String>重新排序

刘选
2023-12-01

小编典典

您还可以使用TreeSet来消除重复项,并使用自己来消除ComparatorUS和GB。

由于每个国家/地区通常有多个区域设置,因此您会得到重复(这将消除这种情况)。有一个美国(西班牙)和一个美国(英语),例如三个瑞士(法国,德国和意大利)。

public class AllLocales {

// Which Locales get priority.

private static final Locale[] priorityLocales = {

Locale.US,

Locale.UK

};

private static class MyLocale implements Comparable {

// My Locale.

private final Locale me;

public MyLocale(Locale me) {

this.me = me;

}

// Convenience

public String getCountry() {

return me.getCountry();

}

@Override

public int compareTo(MyLocale it) {

// No duplicates in the country field.

if (getCountry().equals(it.getCountry())) {

return 0;

}

// Check for priority ones.

for (int i = 0; i < priorityLocales.length; i++) {

Locale priority = priorityLocales[i];

// I am a priority one.

if (getCountry().equals(priority.getCountry())) {

// I come first.

return -1;

}

// It is a priority one.

if (it.getCountry().equals(priority.getCountry())) {

// It comes first.

return 1;

}

}

// Default to straight comparison.

return getCountry().compareTo(it.getCountry());

}

}

public static List listAll() {

Set byLocale = new TreeSet();

// Gather them all up.

for (Locale locale : Locale.getAvailableLocales()) {

final String isoCountry = locale.getDisplayCountry();

if (isoCountry.length() > 0) {

//System.out.println(locale.getCountry() + ":" + isoCountry + ":" + locale.getDisplayName());

byLocale.add(new MyLocale(locale));

}

}

// Roll them out of the set.

ArrayList list = new ArrayList<>();

for (MyLocale l : byLocale) {

list.add(l.getCountry());

}

return list;

}

public static void main(String[] args) throws InterruptedException {

// Some demo usages.

List locales = listAll();

System.out.println(locales);

}

}

2020-10-27

 类似资料: