java String 数组 中文如何排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java String 数组 中文如何排序相关的知识,希望对你有一定的参考价值。
public static void main(String[] args) throws ExceptionList<String> list = new ArrayList<>();
String str[] = new String[] "富川/f","清远/q", "三水/s", "北海/b", "防城港/f" ,"韶关/s", "深圳/s", "顺德/s", "阳江/y", "湛江/z",
"肇庆/z", "中山/z", "珠海/z";
for (String string : str)
list.add(string);
System.out.println("1:" + string + "");
System.out.println("---------------------------");
Collator coll = Collator.getInstance(Locale.CHINESE);
Collections.sort(list, coll);
for (String string : list)
System.out.println("2:" + string + "");
参考技术A 那要看你是按什么顺序排序。 参考技术B 插入排序,二分查找,快速排序 你想用哪种
java HashMap 排序 <String,Integer> 。如何排序? [复制]
【中文标题】java HashMap 排序 <String,Integer> 。如何排序? [复制]【英文标题】:java HashMap sorting <String,Integer> . How to sort it? [duplicate] 【发布时间】:2012-08-27 02:40:51 【问题描述】:可能重复:How to sort a Map<Key, Value> on the values in Java?
在我的项目中,我采用了这样的 HashMap
HashMap 度数 = new HashMap();
假设我有:
degree.put("a",5);
degree.put("b",2);
degree.put("c",4);
degree.put("d",2);
degree.put("e",3);
degree.put("f",5);
现在我必须根据给定的整数值对该列表进行排序
排序后的 HashMap 应该是:
a=5, f=5, c=4, e=4, b=4, d=2
我该怎么做?
【问题讨论】:
在我看来,根据整数值排序的原始 HashMap 实际上就像 a = 5, f = 5, c = 4, e = 3, b = 2, d = 2 . 看看***.com/questions/109383/… 【参考方案1】:ArrayList<Integer> sortedHashMap=new ArrayList<Integer>();
for("your Object" m : degree.values())
sortedHashMap.add(m);
collections.sort(sortedHashMap);
所以,你可以将你的 hashMap 打印为 sorted hashMap!
【讨论】:
【参考方案2】:HashMap
是一个 无序 集合。它没有排序顺序。即使是 TreeMap
也会按键排序,而不是按值排序。
如果您想按值的排序顺序准备一个排序列表,您必须创建一个适当的对象,例如 ArrayList<Map.Entry<String,Integer>>
,遍历您的 HashMap
并插入所有条目,然后使用排序功能调用Collections.sort
。
【讨论】:
【参考方案3】:您可以使用insertion sort 从原始哈希图构建一个新的哈希图(占用 x2 内存并且效率非常低)。因此,您将需要使用哈希图的 .get() 和 .set() 方法几乎 n*n(最坏情况)次,其中 n 是元素的数量。
【讨论】:
【参考方案4】:如果你想要排序地图,HashMap 不是最好的方法。
我建议查看TreeMap
,因为它已排序。您可以设置比较器来比较值而不是键,就像在此答案中所做的那样:
https://***.com/a/1283722/975959
【讨论】:
如果它正在查看值,最好不要计划在该 TreeMap 上调用 .get()。以上是关于java String 数组 中文如何排序的主要内容,如果未能解决你的问题,请参考以下文章