Java JSP如何取得HashMap的大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java JSP如何取得HashMap的大小相关的知识,希望对你有一定的参考价值。

如何取得HashMap内对象的大小,即其内容所内存资源多少字节。知道的告诉一下,不胜感谢!
KeepMoving_OK :这种方法统计的内存大小只有Java使用的内存吗?如果不是,怎样保证统计结果的准确性??? 感觉此路不通。。有没有其他的方法?
曾经想过序列化,不过序列化首先要求继承Serializable,程序就改大了,希望能有个方法改动小一些,直接取对象大小,或者计算response大小也行。

Java里面没有提供像C,C++那样的Sizeof()方法,所以不可以直接取得内存资源大小.

但是有提供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.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];

参考技术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中代码,代码简单写的,只要具体的解决方法,最好有代码实例

HashMap,LinkedHashMap,TreeMap的区别

java如何取得linux某个文件夹所在的分区大小

JSP 从数据库中如何取得图片的路径?