Java JSP如何取得HashMap的大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java JSP如何取得HashMap的大小相关的知识,希望对你有一定的参考价值。
如何取得HashMap内对象的大小,即其内容所内存资源多少字节。知道的告诉一下,不胜感谢!
KeepMoving_OK :这种方法统计的内存大小只有Java使用的内存吗?如果不是,怎样保证统计结果的准确性??? 感觉此路不通。。有没有其他的方法?
曾经想过序列化,不过序列化首先要求继承Serializable,程序就改大了,希望能有个方法改动小一些,直接取对象大小,或者计算response大小也行。
但是有提供Runtime.getRuntime ().totalMemory ()和Runtime.getRuntime ().freeMemory ()这样的方法
所以内存使用大小 = totalMemory () - freeMemory();
但是又不能直接传送Hashmap对象去计算.必须在创建Haspmap之前gc一次,然后得到大小,创建HaspMap之后再gc一次,得到内存大小,然后相减.
===================================
是的,这种方法统计的内存大小是Java使用的内存.但是Java垃圾回收机制,所以不能精确到KB.那就是我们在计算得时候必须GC得原因.
还有一个办法就是上面这么兄弟说得,用序列化.把HaspMap序列化(其实就是写入到一个临时文件).然后这个临时文件得大小,就是内存占用得大小.这个可以精确到KB,但是效率上,值得考究. 参考技术A 在jsp页面中 可以在<% %> 中间添加java代码.
则可以
<% Map map = new HashMap();
int size = map.size();
%> //如果map就是你要获取size的Map
在javascript代码中 可以通过
var size = '<%=size>'; // 获得size 参考技术B 你是说map的大小还是map里面的对象的字节数?
如果是前者的话就直接size就出来了
后者的话,可以通过序列化来得到 参考技术C Entry出来吧
如何取得map里key得最大值
一般在map里取key的最大值是先排序,之后取出最大的一个即可。
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MaxMapDemo
public static void main(String[] args)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(1, 8);
map.put(3, 12);
map.put(5, 53);
map.put(123, 33);
map.put(42, 11);
map.put(44, 42);
map.put(15, 3);
System.out.println(getMaxKey(map));
System.out.println(getMaxValue(map));
/**
* 求Map<K,V>中Key(键)的最大值
* @param map
* @return
*/
public static Object getMaxKey(Map<Integer, Integer> map)
if (map == null) return null;
Set<Integer> set = map.keySet();
Object[] obj = set.toArray();
Arrays.sort(obj);
return obj[obj.size()-1];
/**
* 求Map<K,V>中Value(值)的最大值
* @param map
* @return
*/
public static Object getMaxValue(Map<Integer, Integer> map)
if (map == null) return null;
Collection<Integer> c = map.values();
Object[] obj = c.toArray();
Arrays.sort(obj);
return obj[obj.size()-1];
参考技术A 实现思路:先排序,之后取出最大的一个即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MaxMapDemo
public static void main(String[] args)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(1, 8);
map.put(3, 12);
map.put(5, 53);
map.put(123, 33);
map.put(42, 11);
map.put(44, 42);
map.put(15, 3);
System.out.println(getMaxKey(map));
System.out.println(getMaxValue(map));
/**
* 求Map<K,V>中Key(键)的最大值
* @param map
* @return
*/
public static Object getMaxKey(Map<Integer, Integer> map)
if (map == null) return null;
Set<Integer> set = map.keySet();
Object[] obj = set.toArray();
Arrays.sort(obj);
return obj[obj.size()-1];
/**
* 求Map<K,V>中Value(值)的最大值
* @param map
* @return
*/
public static Object getMaxValue(Map<Integer, Integer> map)
if (map == null) return null;
Collection<Integer> c = map.values();
Object[] obj = c.toArray();
Arrays.sort(obj);
return obj[obj.size()-1];
以上是关于Java JSP如何取得HashMap的大小的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JSP 页面中从 Java 类中设置 hashmap 的值以便在控制器中进一步使用
在JAVA或JSP中,能否取得登录WINDOWS的域名及用户名?
js中如何取得jsp中的List;例如下边jsp中代码,代码简单写的,只要具体的解决方法,最好有代码实例