`
guiven
  • 浏览: 28758 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java Final关键字与HashMap

    博客分类:
  • java
阅读更多

 

Why final is not applied for Map ?

Prabhat Ranjan 
Ranch Hand 

Joined: Oct 04, 2006
Posts: 374 
Hi, 

Map hm= new HashMap(); 
hm.put("hash","test"); 

ok 

final Map hm= new HashMap(); 
hm.put("hash","test");// this should not allow here as Map i have declared as final. 

ko 

but Map hms = Collections.unmodifiable(hm) is working fine.
Matthew Brown 
Bartender 

Joined: Apr 06, 2010
Posts: 4115 
    
    4

I like...
Java Netbeans IDE Scala
Prabhat Ranjan wrote:final Map hm= new HashMap(); 
hm.put("hash","test");// this should not allow here as Map i have declared as final. 

But hm is still pointing at the same object. final means that the reference can't be altered, not the object itself.
Paul Sturrock 
Bartender 

Joined: Apr 14, 2004
Posts: 10336 

I like...
Eclipse IDE Hibernate Java

hm.put("hash","test");// this should not allow here as Map i have declared as final. [ 

Final does not imply unmodifiable, unless the object is immutable. If you want an unmodifiable map have a look at the Collections class, or alternatively wrap the map in your own custom immutable class.

 

 

如果要实现HashMap不可被修改,即如果不可变类的成员变量是可变的(譬如HashMap),我们需要使用深拷贝(deep copy)或者克隆来防止成员变量被更改:

    private final HashMap testMap;
 
……
……
……
 
    /**
     * 可变对象的访问方法
     */
    public HashMap getTestMap() {
        //return testMap;
        return (HashMap) testMap.clone();
    }

 

分享到:
评论

相关推荐

    详解Java中的final关键字的使用

    在Java编程语言中,`final`关键字扮演着至关重要的角色,它用于声明不可变的变量、方法和类。理解并熟练运用`final`关键字对于编写稳定、高效且易于维护的代码至关重要。 首先,`final`关键字用于声明变量。当一个...

    JAVA基础笔记以及关键字整理.rar

    3. **数组与集合**: 数组是固定大小的数据容器,集合则更为灵活,包括ArrayList、LinkedList、HashSet、HashMap等多种类型,它们各自有不同的特性和应用场景。 4. **异常处理**: Java中的try-catch-finally语句块...

    Java中final共2页.pdf.zip

    在Java编程语言中,`final`关键字是一个非常重要的概念,它具有多种用途,涉及到类、方法和变量的声明。在本篇文章中,我们将深入探讨`final`关键字在Java中的使用和意义。 首先,`final`关键字用于声明一个不可变...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    final关键字特性 Java类和包 抽象类和接口 代码块和代码执行顺序 Java自动拆箱装箱里隐藏的秘密 Java中的Class类和Object类 Java异常 解读Java中的回调 反射 泛型 枚举类 Java注解和最佳实践 JavaIO流 多线程 深入...

    实习生java面试题集及详细答案.pdf

    Java中的final关键字可以修饰变量、方法和类。当final关键字修饰变量时,表示该变量的值不能被改变;当final关键字修饰方法时,表示该方法不能被重写;当final关键字修饰类时,表示该类不能被继承。 Java面向对象 ...

    2022年JAVA基础考试题及答案.pdf

    本资源摘要信息涵盖了 JAVA 基础知识领域的多个方面,包括抽象类、同步、集合、线程、Map 集合、文件输入/输出、接口、final 关键字、继承、构造方法、异常类、break 语句等。 1. 抽象类:抽象类是 JAVA 中的一种...

    java关键字源码-KeyWordsCount:CCP作业:编写一个程序来计算Java文本源代码文件中关键字的出现次数。计算文件中每个关键字的

    3. **检查关键字**:遍历每行中的单词,将其与Java关键字列表比较,如果匹配则计数。 4. **存储和显示结果**:将每个关键字及其出现次数存储在一个映射结构(如HashMap)中,并在程序结束时输出结果。 此外,由于...

    枚举 HashMap

    虽然HashMap不是线程安全的,但在单线程环境下使用或配合同步机制(如`synchronized`关键字或`Collections.synchronizedMap()`)可以保证安全性。 以下是一个简单的示例,展示了如何用HashMap实现枚举功能: ```...

    java面试题大全.pdf

    7. final关键字和static关键字的使用:final关键字可以用来声明变量、方法和类,表示不可变、最终状态或封闭的含义。static关键字用于创建类变量和类方法,它表示相关成员属于类,而非类的实例。 8. 基本数据类型与...

    java面试题.pdf

    3. final 关键字的作用:final 关键字用于修饰变量、方法和类,表示它们不能被修改或继承。 4. String、StringBuffer、StringBuilder 的区别:String 是不可变字符串,StringBuffer 和 StringBuilder 是可变字符串,...

    2022 最全 Java 面试笔试题汇总

    * Java 中 final 关键字的作用是什么?java 中的反射机制是什么? * Java 如何高效进行数组拷贝?成员变量和方法的区别是什么? Java Web * Cookie 和 Session 的关系和区别是什么?HTTP 连接池实现原理是什么? ...

    《Java语言程序设计(Java7) 入门与提高篇》源代码

    - final关键字:常量和不可变对象 - static关键字:静态变量和静态方法 - this关键字:引用当前对象 - 构造器的重载 - 包装类:将原始类型转换为对象 5. **第五章(ch5):集合框架** - 集合接口:List、Set...

    JAVA考试面试题目精选

    #### 一、Final关键字的理解与应用 1. **final关键字的基本用法:** - `final`关键字在Java中主要用于声明不可变性,它可以修饰类、方法以及变量。 - 一旦一个变量被声明为`final`,那么它的值就不能再被改变。 ...

    java提高性能.pdf

    2. final关键字:在Java中,final关键字用于声明属性、方法和类不能被改变,它可以提高性能,因为final变量在编译时就能被确定下来。例如,“finaljava.lang.StringStringfinallength()”表明String类的length()方法...

    Java最新面试题大全

    5. static与final关键字:static表示静态,它与类相关联,不依赖于类的任何特定对象。final关键字用于声明常量、属性和方法,表示一旦赋值后不可更改。 6. Java集合框架:包括List、Set、Map等接口以及实现这些接口...

    Java SE编程入门教程 java集合(共38页).pptx

    Java SE编程入门教程涵盖了广泛的Java基础知识,包括集合框架、垃圾回收、instanceof操作符、I/O流、Math类、Object类、static final关键字、this和super关键字、常用API、GUI编程、包装器、反射机制、泛型、封装...

    (2020最新)Java面试题.pdf

    4. final在Java中的作用:final关键字可以修饰变量、方法和类,表示它们不可修改或继承。 5. java中的Math.round(-1.5)等于多少?:-1,因为Math.round方法将数字四舍五入到最接近的整数。 6. String属于基础数据...

    Sun认证Java程序员考试

    2. 类与对象:封装、继承、多态,类的构造器,访问修饰符(public、private、protected、默认),final关键字,this和super关键字。 3. 异常处理:异常分类(检查型和非检查型异常),try-catch-finally语句,throws...

    java笔试题.txt

    根据提供的文件信息,我们可以从中提炼出与Java相关的多个知识点,具体包括异常处理、类与对象的概念、线程管理、错误与异常的区别、final关键字的使用、堆栈的区别、自定义数据结构、图形系统的设计、匿名内部类的...

    Java基础课件 全套pdf版 java培训

    - 静态与final关键字:掌握静态成员和常量的使用。 - 泛型:学习如何使用泛型提高代码的类型安全性和重用性。 4. **Java集合**(7. 尚硅谷_佟刚_Java基础_Java集合.pdf): - 集合框架:介绍ArrayList, ...

Global site tag (gtag.js) - Google Analytics