public class test6 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("a", null);
map.put("b", "马先生");
map.put("c", "马先生");
map.put("1", "马先生");
map.put("2", "马先生");
map.put("3", "马先生");
map.put("4", "马先生");Set i = map.keySet();
//set集合应该为[3, 2, 1, b, c, 4, a]
System.out.println(i);int len = i.size(); //i 为7//获得set的集合长度 随机该长度下表的值
System.out.println(len);
Random random = new Random();
int key =random.nextInt(len); // key 为0到7之间任意的随机数
?????????
如何获得set集合中 随机出来的那个下标的值
通过得到的随机下标值如何得到 "a " 或者 "b"
??????????
}JavarandommapkeySetJ2SE
解决方案 »
- HTML如何给labale赋值
- 寻求一下这个中断http连接的解决方案
- JAVA语法跟C#如此近似,该注意哪些问题?(C#转JAVA的问题)
- outputStream如何写入excel文件?现在的情况是生成了一个空的excel文件
- 问个比较初级的问题native2ascii不是内部命令
- 对链表困惑不解 。。。
- 和thread有关的类是不是不能用下面的方法new和调用??
- 求教:数据库连接(SQL SERVER 2k)问题
- ***java如何往windows里的剪贴板里放值(100分)****
- 数据库中缓冲池的java解决
- JAVA设置系统托盘问题
- 求大牛回复:static final初始化问题
Iterator<String> ite = i.iterator();
while(ite.hasNext()){
System.out.println(ite.next());
}set是没有顺序的 所以没方法用下标获取
只能用set啊
但是我又想随机的获得map的key的值
我该怎么办
那我该如何随机的获取keySet里面的值呢?
楼主是是LinkedHashMap,这个里面键值对,会按照put的先后顺序排序,
但是,想要获得排好序的键集合,还得把那个Set转换成List才可以。
List集合里面的元素是有序的。
map.put("a", null);
map.put("b", "马先生");
map.put("c", "张先生");
map.put("1", "李先生");
map.put("2", "余先生");
map.put("3", "P先生");
map.put("4", "SB先生");
Set<Map.Entry> set = map.entrySet();
Object[] entryArray = set.toArray();//谁能告诉我这步直接转换成Map.Entry[]数组,强制(Map.Entry[]) set.toArray()报错
for (int i = 0; i < entryArray.length; i++) {
Map.Entry entry=(Map.Entry)entryArray[i];
System.out.println("i:"+i+"key:"+entry.getKey() + ":"
+ (entry.getValue()==null?"":entry.getValue()));
}
Random random = new Random();
int key = random.nextInt(set.size());
Map.Entry entry=(Map.Entry)entryArray[key];
System.out.println(entry.getKey() + ":"
+ entry.getValue());
即便把随机数key换成一个常量 比如3,如果你后续又插入的话 会导致结果变化。所以你可以换成LinkedHashMap,这样就能保证日后的插入式插入在末尾的。(LinkedHashMap在你遍历时以元素插入顺序返回简直对)