当前位置: 首页 > 面试题库 >

限制Java中HashMap的最大大小

年业
2023-03-14
问题内容

我想限制a的最大大小,以HashMap对正在实现的各种哈希算法进行度量。我在的一个HashMap重载构造函数中查看了loadfactor 。

HashMap(int initialCapacity, float loadFactor)

我尝试在构造函数中将loadFactor设置为0.0f(这意味着我不希望HashMap的大小从EVER增大),但javac将此无效:

Exception in thread "main" java.lang.IllegalArgumentException: Illegal load factor: 0.0
        at java.util.HashMap.<init>(HashMap.java:177)
        at hashtables.CustomHash.<init>(Main.java:20)
        at hashtables.Main.main(Main.java:70) Java Result: 1

还有另一种方法来限制它的大小,HashMap使其永远不会增长吗?


问题答案:

有时越简单越好。

public class InstrumentedHashMap<K, V> implements Map<K, V> {

    private Map<K, V> map;

    public InstrumentedHashMap() {
        map = new HashMap<K, V>();
    }

    public boolean put(K key, V value) {
        if (map.size() >= MAX && !map.containsKey(key)) {
             return false;
        } else {
             map.put(key, value);
             return true;
        }
    }

    ...
}


 类似资料:
  • 问题内容: 我想返回该数字,只要它在限制范围内,否则返回限制的最大值或最小值。我可以结合使用和和。 我想知道,如果有一个现有的或我俯瞰功能。 如果第三方库很常见(例如Commons或Guava),则欢迎它们 问题答案: 从版本21开始,Guava包括(以及其他原语的等效方法)。从发行说明中: 添加了将给定值限制在和值定义的封闭范围内的方法。如果值在范围内,则返回值本身,如果值在范围内,则返回值,如

  • 在Log4J2中,当大小超过指定阈值时,我希望修剪写入控制台附加器的消息的结尾。 知道吗?

  • 问题内容: 我正在使用JVM标志运行Java进程,并看到以下输出: 有没有办法解决这个问题? 问题答案: 当无法满足Java堆的分配或永久生成时,命令行选项告诉HotSpot VM生成堆转储。使用此选项运行不会产生任何开销,因此对于OutOfMemoryError需要很长时间才能浮出水面的生产系统很有用。 为了解决您面临的特定问题,可以使用以下纠正措施之一: 措施1: XX:HeapDumpSeg

  • 在上传过程中是否有Spring引导可以处理的最大文件大小。我知道我可以在属性中设置,例如。 这样,我就可以允许上传一个巨大的文件,比如50MB。该应用程序在与Spring Boot集成的Tomcat服务器上运行。我是否还需要配置tomcat服务器?还是文件大小不受限制?

  • 问题内容: 我是否可以使用Spring Security来限制能够同时登录网站的最大用户数量? 绝对不是并发会话控制参数。例如,我要限制最大只允许1000个用户同时登录。如果超过该通知页面说明已超过最大用户数 问题答案: 您可以通过访问SessionRegistry来查找当前登录的用户,从而使用Spring Security的并发会话控制。在Spring Security 3中,Concurren

  • 我遇到一个情况,其中一个JVM选项,“-d”标志很大,超过1000个字符。这个值有多大的限制吗?