我对synchronized
关键字的用法和重要性有一些疑问.
synchronized
关键字有什么意义?synchronized
?我正在寻找一个具有键值关联的java类,但不使用哈希.这是我目前正在做的事情:
Hashtable
.Hashtable.entrySet()
.Map.Entry
迭代器.Module
根据值创建类型(自定义类)的对象.这个问题是我无法控制返回值的顺序,所以我不能以给定的顺序显示值(不对代码进行硬编码).
我会使用一个ArrayList
或Vector
为此,但稍后在代码中我需要抓取Module
给定Key 的对象,我无法使用ArrayList
或Vector
.
有没有人知道一个可以执行此操作的免费/开源Java类,或者Hashtable
根据添加时间来获取值的方法?
谢谢!
我尝试将对象添加到List<String>
实例,但它会抛出一个UnsupportedOperationException
.有谁知道为什么?
我的Java代码:
String[] membersArray = request.getParameterValues('members');
List<String> membersList = Arrays.asList(membersArray);
for (String member : membersList) {
Person person = Dao.findByName(member);
List<String> seeAlso;
seeAlso = person.getSeeAlso();
if (!seeAlso.contains(groupDn)){
seeAlso.add(groupDn);
person.setSeeAlso(seeAlso);
}
}
Run Code Online (Sandbox Code Playgroud)
错误消息:
java.lang.UnsupportedOperationException java.util.AbstractList.add(Unknown Source) java.util.AbstractList.add(Unknown Source) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
我需要将a转换HashMap<String, Object>
为数组; 有谁能告诉我它是如何完成的?
可能重复:
为什么Dictionary优先于C#中的哈希表?
Dictionary和Hashtable有什么区别.如何决定使用哪一个?
我有一个对象列表,我需要在一个字段上排序,比如分数.在没有多想的情况下,我编写了一个实现Comparator的新类,它可以执行任务并且可以正常运行.
现在回过头来看,我想知道我是否应该让我的类实现Comparable,而不是创建一个实现Comparator的新类.分数是对象将被订购的唯一字段.
我做过什么可以接受的做法?
是正确的方法"首先让类实现Comparable(对于自然顺序),如果需要替代字段比较,那么创建一个实现Comparator的新类"?
如果上面的(2)为真,那么它是否意味着只有在具有类实现Comparable之后才应该实现Comparator?(假设我拥有原始课程).
根据以下链接文档:Java HashMap Implementation
我对HashMap
(或者更确切地说是增强HashMap
)的实现感到困惑.我的疑问是:
首先
static final int TREEIFY_THRESHOLD = 8;
static final int UNTREEIFY_THRESHOLD = 6;
static final int MIN_TREEIFY_CAPACITY = 64;
Run Code Online (Sandbox Code Playgroud)
为什么以及如何使用这些常量?我想要一些明确的例子. 他们如何通过这个获得性能提升?
其次
如果您HashMap
在JDK中看到源代码,您将找到以下静态内部类:
static final class TreeNode<K, V> extends java.util.LinkedHashMap.Entry<K, V> {
HashMap.TreeNode<K, V> parent;
HashMap.TreeNode<K, V> left;
HashMap.TreeNode<K, V> right;
HashMap.TreeNode<K, V> prev;
boolean red;
TreeNode(int arg0, K arg1, V arg2, HashMap.Node<K, V> arg3) {
super(arg0, arg1, arg2, arg3);
}
final HashMap.TreeNode<K, V> root() {
HashMap.TreeNode arg0 …
Run Code Online (Sandbox Code Playgroud) 我正在阅读Java中的volatile关键字并完全理解它的理论部分.
但是,我正在寻找的是一个很好的案例,它展示了如果变量不是易变的话会发生什么.
下面的代码片段无法正常工作(来自aioobe)
class Test extends Thread {
boolean keepRunning = true;
public void run() {
while (keepRunning) {
}
System.out.println("Thread terminated.");
}
public static void main(String[] args) throws InterruptedException {
Test t = new Test();
t.start();
Thread.sleep(1000);
t.keepRunning = false;
System.out.println("keepRunning set to false.");
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,如果keepRunning不是volatile,则线程应该继续无限运行.但是,它会在几秒钟后停止.
我有两个基本问题: -
Java中的ConcurrentHashMap和Hashtable有什么区别?
哪个对线程应用程序更有效?
哈希映射和字典ADT之间有什么区别.什么时候比较喜欢一个.对于我的编程作业,我的导师要求使用其中一个,但我认为两者之间没有任何区别.该计划应该与一个巨大的没有.字符串.有什么建议?
java ×9
hashmap ×3
collections ×2
dictionary ×2
arraylist ×1
arrays ×1
c# ×1
comparable ×1
comparator ×1
concurrency ×1
exception ×1
hashtable ×1
java-8 ×1
key-value ×1
keyword ×1
list ×1
synchronized ×1
volatile ×1