Java List和Map的问题?

啊,我已经遇到你的问题了。
上周一位客户问了我类似的问题,我是这样向他解释的。

首先,你提到的HashMap的原理其实就是它内部通过哈希函数存储键值对。
每个key都会通过哈希函数计算出一个哈希值,然后根据这个哈希值来确定存储位置。
因此,理论上,只要key不变,它的存储位置也将保持不变。

但是,你所说的“地址不变,值改变,get(key)中的所有值都相应改变”,其实不太可能发生。
因为HashMap就是为了避免这种情况而设计的。
每个键值对都是独立存储的,对一个键的更改不会影响其他键。

至于你提到的变量池的想法,其实是有风险的。
虽然您提到的 HashMap 功能在某些特定场景中可能很有用,例如如果您需要多个类共享某些变量,但这样做会存在几个问题:
1 线程安全问题:如果你的程序是多线程的,使用HashMap共享变量会导致线程安全问题。
2 、维护难度:随着项目复杂度的增加,维护这样的变量池会变得非常困难。
3 、性能问题:频繁的get、set操作会影响HashMap的性能。

我陷入的陷阱是,一开始我使用HashMap来共享变量,后来发现当其中一个变量的值改变时,其他地方也改变了,导致程序出现很多bug。

所以,我的建议是,除非你非常清楚自己在做什么,否则不建议像这样在类之间共享变量。
这仍然取决于你,但我认为最好保持谨慎。
我还在思考这个问题,也许还有其他更好的解决方案。

java代码里哪些是线程共享资源

我上周读了《Java》这本书。

内存空间。
堆内存。
对象实例放置在这里。

方法区。
班级信息位于此处。
将常数放在这里。
静态变量在这里设置。

TLAB技术。
堆内存的一部分。
独家主题。

文件描述符。
打开文件。
常见的。

许多线程。
读取和写入同一个文件。

共享变量。
静态变量。
实例变量。
不同步。
线程安全。

其他进程资源。
一段代码。
全球数据。

刷新记忆。
私人话题。
方法调用放置在这里。
在这里设置局部变量。
它不被共享。

不确定这部分。
没关系。

JAVA中如何把一个类中赋值的变量传递到另一个类中使用

哎呀,这段代码看起来像是初学者写的,不过没关系,让我解释一下。

首先,你看到这里有一个 MainClass,对吗?该类内部有一个变量 str,默认为空字符串。
然后,在里面new了一个A类的对象,称为a。
这项新行动非常重要。
就像:“嘿,让我们创建一个 A 类的实例并向它传递一个参数。
” A类有一个String类型的私有变量str,默认为空字符串。
然后它有一个构造函数,接受一个String类型的参数,即str。

当你创建一个类A的新对象,如a=new A("Hello")时,这里的参数“Hello”被传递给类A的构造函数。
然后这个参数被赋值给类A中的私有变量str。

所以当你调用System.out.println("arg="+str)时,它会输出r=hello,因为str被赋值为“hello”。

但是这里有一个小问题。
您将类 A 设置为受保护,这意味着它只能由包或继承的类访问。
如果你想在其他包中使用这个类型A,就会出现问题。

当我写代码的时候,我不明白为什么有些人喜欢使用protected。
说实话,我觉得公立还是私立更直观。
public表示任何人都可以访问,private表示只有A类可以访问。
保存起来就像是半公开的,有点尴尬。

总之,这段代码的逻辑是正确的,但是A类和MainClass之间的交互有点问题。
如果你想在其他包中使用A类,你必须将它公开或者找到一种方法让它可以被其他包访问。