如何让 Map 中的值按放入顺序输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让 Map 中的值按放入顺序输出相关的知识,希望对你有一定的参考价值。
参考技术A java.util.TreeMap 放入其中的value,自动按key进行排序, 默认的排序规则按ascii码排序,如果是key是英文和数字不会有问题,如果中文则会出现问题,需要自己写排序规则。比较器需要实现java.text.Collator类,例如:
package cn.tjopen.mediaman.util;
import java.text.CollationKey;
import java.text.Collator;
public class CollatorComparator extends Collator
private Collator collator = Collator.getInstance();
private int sort=1;
@Override
public int compare(String arg0, String arg1)
CollationKey key1 = collator.getCollationKey(arg0);
CollationKey key2 = collator.getCollationKey(arg1);
return sort*key1.compareTo(key2);
/**
* 设定排序的方向
* @param i 排序方向(正数:正序;负数:倒序)
*/
public void setSort(int i)
if(i>0)
sort=1;
else if(i<0)
sort=-1;
@Override
public CollationKey getCollationKey(String arg0)
// TODO Auto-generated method stub
return null;
@Override
public int hashCode()
// TODO Auto-generated method stub
return 0;
比较器的使用:
int sort = 1;//>0正序<0倒叙
CollatorComparator comparator = new CollatorComparator();
comparator.setSort(sort);
Map map = new TreeMap(comparator);
然后在把要排序的字段作为key,相应的信息作为对应的value,即可实现排序
注意:key值不能重复,如果排序字段有重复,则需要进行处理。
例如:方法一:在向map中存放数据时,先判断要放的key是否已存在,如果存在在当前值后面加一区分标记
方法二:如果信息中有不可能重复的字段,在排序字段后面加上这个不重复的字段值,把这个组合当做key本回答被提问者和网友采纳
将一个数组中的值按逆序重新存放。例如8,6,5,4,1要求改为1,4,5,6,8.
不能用输入输出方法!要求用循环+数组的方法。
参考技术A LENGTH = ARRAY1.LENGTH;FOR(INT I=0;I<LENGTH;I++)
ARRAY2[i] = array1[LENGTH-i-1];
参考技术B 如果允许在循环中使用中间变量,假定数组为int型数组,使用java语言描述如下:
int [] arr = 1, 2, 3, 4, 5, 6, 7, 8, 9;//数组
int temp = 0; //中间变量
for(int i=0; i<arr.length/2; i++)
temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
然后你试试把他们显示出来看看是不是逆序的了。
-----------------------
若不使用中间变量亦可:
for(int i=0; i<arr.length/2; i++)
arr[i] = arr[i] + arr[arr.length-1-i] - (arr[arr.length-1-i]=arr[i]);
本回答被提问者采纳
以上是关于如何让 Map 中的值按放入顺序输出的主要内容,如果未能解决你的问题,请参考以下文章
如何将一个数组的值按逆序重新存放于原数组中,并输出。例如:原来顺序为3,6,5,4,9改为9,4?
将一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。填空