首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java-将ConcurrentHashMap添加到JList中的正确方法?

Java-将ConcurrentHashMap添加到JList中的正确方法?
EN

Stack Overflow用户
提问于 2015-01-29 10:46:26
回答 1查看 79关注 0票数 0

下面是我的示例代码:

个人类别:

代码语言:javascript
运行
AI代码解释
复制
public class Person {



private String firstName;
private String lastName;



@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result
            + ((firstName == null) ? 0 : firstName.hashCode());
    result = prime * result
            + ((lastName == null) ? 0 : lastName.hashCode());
    return result;
}



@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Person other = (Person) obj;
    if (firstName == null) {
        if (other.firstName != null)
            return false;
    } else if (!firstName.equals(other.firstName))
        return false;
    if (lastName == null) {
        if (other.lastName != null)
            return false;
    } else if (!lastName.equals(other.lastName))
        return false;
    return true;
}



public Person(String firstName,String lastName){

    this.setFirstName(firstName);
    this.setLastName(lastName);
}



public String getFirstName() {
    return firstName;
}



private void setFirstName(String firstName) {
    this.firstName = firstName;
}



public String getLastName() {
    return lastName;
}



private void setLastName(String lastName) {
    this.lastName = lastName;
}

}

试验/主要:

代码语言:javascript
运行
AI代码解释
复制
ConcurrentHashMap<Integer,Person> storage = new ConcurrentHashMap<Integer, Person>();
    storage.put(1, new Person("Sally","Solomon"));
    storage.put(2, new Person("Harry","Solomon"));

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton jButton1 = new JButton("Button");


    Person [] personArr= storage.values().toArray(new Person[0]);
    String [] names = new String[personArr.length];

    System.out.println(personArr.length);

    for(int i=0; i<personArr.length; i++){
        System.out.println(personArr[i].getFirstName());
        names[i] = personArr[i].getFirstName() + " " + personArr[i].getLastName();
    }



    final JList jList1 = new JList(names);

问题:,获取ConcurrectHashMap中的值并将它们添加到JList中的正确方法是什么?我这样做的方法是将所有的值读取到一个字符串数组中,并将其添加到JList中。

  1. 能否更有效地进行呢?
  2. 他们这样做安全吗?还是我只是更新存储并将其添加到JList中呢?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 11:59:04

ConcurrentHashMap文档

类似地,迭代器和枚举返回元素,这些元素在迭代器/枚举创建后的某个点反映了哈希表的状态。他们不抛ConcurrentModificationException。但是,迭代器一次只能被一个线程使用。

因此,如果您是唯一一个迭代映射,您是很好的,即使另一个线程正在更新它。但是请注意,在使用Swing时,在访问GUI小部件时主要提到线程安全--必须通过事件调度线程来完成。因此,上面的代码应该从传递给EventQueue#invokeLater的可运行程序中运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28222243

复制
相关文章
dart - 将 orElse 函数添加到 firstWhere 方法
我正在尝试将 onElse 函数添加到 iterator.firstWhere 方法,但我无法获得正确的语法。 我试过类似的东西
徐建国
2021/08/31
1.8K0
ConcurrentHashMap的put方法
震惊!ConcurrentHashMap里面也有死循环,作者留下的“彩蛋”了解一下? - 掘金 这道面试题我真不知道面试官想要的回答是什么
在下是首席架构师
2022/08/01
8500
如何使用ReconAIzer将OpenAI添加到Burp中
ReconAIzer是一款功能强大的Burp Suite扩展,该工具基于Jython开发,可以为Burp Stuite添加OpenAI能力,并利用OpenAI来优化和增强渗透测试过程中的网络侦查任务。该工具专为漏洞猎人和渗透测试人员设计,支持以自动化的形式执行多种网络安全任务,可以帮助广大安全研究人员以简单快速的形式识别和利用漏洞。
FB客服
2023/08/08
6600
如何使用ReconAIzer将OpenAI添加到Burp中
powerdesigner批量将name添加到comment里面的方法
使用方法使用方法 PowerDesigner->Tools->Execute Commands->Edit/Run Scripts Java代码  '如果comment为空,则填入name;如果不为空,则保留不变。   Option Explicit    ValidationMode = True    InteractiveMode = im_Batch   Dim system, file   Set system = CreateObject("Scripting.FileSystem
幽鸿
2020/04/02
1.1K0
Java中的JList和DefaultListModel的亲密关系
然后就是JList的多列显示,使用setLayoutOrientation(参数)方法来实现,共有3个参数,默认值是JList.VERTICAL,只用一列来显示,但不会自动滚动,需要添加滚动面板才能出现滚动条。setVisibleRowCount(n);方法可以设置最多显示多少行(若没有添加滚动面板,此设置无效,所有内容均会显示)。另外两个参数是JList.VERTICAL_WRAP和JList.HORIZONTAL_WRAP,其含义分别是“在保证行数不超过setVisibleRowCount(n)的情况下,纵向或横向排列元素”。此时滚动面板无效,因为行数永远不可能超标,因此滚动面板也永远不会出现 。比如最大显示行数为4,总共有5个元素,显示结果如下:
JavaEdge
2020/05/26
1.1K0
Java-方法重写中的声明异常(throws)原则
版权声明: https://blog.csdn.net/li_xunhuan/article/details/89041674
Fisherman渔夫
2019/07/31
8830
Java-方法重写中的声明异常(throws)原则
Winform 后台将指定的控件集合添加到制定容器中
1 /// <summary> 2 /// 把按钮按照行数分割排列 3 /// </summary> 4 /// <param name="ControlArry">按钮集合</param> 5 /// <param name="control_parent">父容器</param> 6 /// <param name="RowCount">每一行数量</param> 7 ///
FreeTimeWorker
2020/08/31
2.6K0
Windows:将cmd命令行添加到右键中方法
win10中将命令行cmd添加到右键的方法 Windows cmd 右键 win10 命令行 最近在学python,所以会用到很多库文件,但是有的库文件需要下载whl文件再通过cmd进行安装,所以每次
marsggbo
2018/01/23
1.9K0
Windows:将cmd命令行添加到右键中方法
一种将web项目快速添加到eclipse tomcat server的方法
这是我们将web项目添加到eclipse tomcat服务器的方式,如果你频繁的添加/删除web项目,那么本文讲述的这种方式具有更大的便捷性:
johnhuster的分享
2022/03/28
1.1K0
一种将web项目快速添加到eclipse tomcat server的方法
Java-方法反射的基本操作
public class ClassDemo2 { /** * @Author: www.itze.cn * @Date: 2020/9/21 10:37 * @Email: 814565718@qq.com */ public static void main(String[] args) { /** * 要获取一个方法,就是获取一个类的信息,要获取类,就要先获取该类的类类型 */
itze
2022/10/31
2880
Java-线程中的异常
给出以下例子,我想问题是线程t1运行期间抛出的异常能够被捕获吗?(这是一个相当好的问题~)
Fisherman渔夫
2020/02/19
1.5K0
将Sublime添加到鼠标右键
2、找到 HKEY_CLASSES_ROOT/*/shell 目录,在此目录下操作。
新码农
2020/03/05
3.3K0
如何将MV中的音频添加到EasyNVR中做直播背景音乐?
EasyNVR已经支持自定义上传音频文件,可以做慢直播场景使用,前两天有一个开发者提出一个问题:想把一个MV中的音频拿出来放到EasyNVR中去做慢直播。
EasyNVR
2021/10/28
4.7K0
如何将MV中的音频添加到EasyNVR中做直播背景音乐?
解决将Editplus添加到鼠标右键的问题
以管理员身份运行EditPlus 一次点击–>工具–>首选项–>常规–>勾选将EditPlus添加到系统右键菜单选项
别团等shy哥发育
2023/02/25
1.7K0
解决将Editplus添加到鼠标右键的问题
将Windows Terminal添加到鼠标右键
导读 非常实用的小技巧。 下载Windows Terminal图标,右键另存为。 [WindowsTerminal图标] 保存至'C:\Users\Administrator\AppData\Local\Terminal\Terminal.ico'。 win+R输入'regedit',打开注册表。 找到'HKEY_CLASSES_ROOT\Directory\Background\shell'目录,在此目录下操作。 新建项'wt',双击右边'默认',更改右键文字显示内容'Windows Terminal H
新码农
2020/08/05
3.9K0
将Windows Terminal添加到鼠标右键
Vue 中 强制组件重新渲染的正确方法
有时候,依赖 Vue 响应方式来更新数据是不够的,相反,我们需要手动重新渲染组件来更新数据。或者,我们可能只想抛开当前的DOM,重新开始。那么,如何让Vue以正确的方式重新呈现组件呢?
前端小智@大迁世界
2022/06/15
8.1K1
Vue 中 强制组件重新渲染的正确方法
如何正确实现Java中的hashCode方法
你知道一个对象的唯一标志不能仅仅通过写一个漂亮的equals来实现 太棒了,不过现在你也必须实现hashCode方法。 让我们看看为什么和怎么做才是正确的。 相等和哈希码 相等是从一般的方面来讲,哈希码更加具有技术性。如果我们在理解方面存在困难,我们可以说,他们通过只是一个实现细节来提高了性能。 大多数的数据结构通过equals方法来判断他们是否包含一个元素,例如: List<String> list = Arrays.asList("a", "b", "c"); boolean contains = li
用户1667431
2018/04/18
2K0
Subversion添加到Windows服务的方法
在Windows中安装Subversion服务器时,将Subversion添加到Windows的服务中,需要在命令行状态下执行如下指令:
魏杰
2022/12/23
3930
点击加载更多

相似问题

JList -循环,将元素添加到JList

11

将JScrollPane添加到JList中

30

将jlist的选定元素添加到另一个jlist中的快速方法

10

将滚动条添加到JList,将JList添加到JPanel

21

Java-如何基于JList 1中的选择在JList 2中选择项?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档