Java中的ArrayList和HashMap的区别

Java中的ArrayList和HashMap是两种不同的集合类,它们的区别如下:

1.底层数据结构不同:ArrayList底层是基于数组实现的,而HashMap底层是基于哈希表实现的。

2.用途不同:ArrayList主要用于存储一组有序的对象,可以根据下标进行快速访问;而HashMap主要用于存储键值对,可以根据键快速查找对应的值。

3.添加元素的过程不同:ArrayList添加元素时,如果数组已满,需要进行扩容操作,将原数组复制到一个新的更大的数组中;而HashMap添加元素时,需要先计算键的哈希值,然后根据哈希值找到对应的桶,如果桶中已经有元素,则需要进行链表或红黑树的操作。

4.线程安全性不同:ArrayList不是线程安全的,如果多个线程同时对同一个ArrayList进行修改,可能会导致数据不一致的问题;而HashMap也不是线程安全的,但可以通过使用ConcurrentHashMap等线程安全的Map来保证线程安全。

下面是一个演示ArrayList和HashMap的例子:

import java.util.ArrayList;
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        // 创建一个ArrayList并添加元素
        ArrayList<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        list.add("orange");
        // 遍历ArrayList并输出元素
        for (String s : list) {
            System.out.println(s);
        }

        // 创建一个HashMap并添加键值对
        HashMap<String, Integer> map = new HashMap<>();
        map.put("apple", 1);
        map.put("banana", 2);
        map.put("orange", 3);
        // 根据键查找对应的值并输出
        System.out.println(map.get("apple"));
        System.out.println(map.get("banana"));
        System.out.println(map.get("orange"));
    }
}

示例代码:

public class MainTask {
    private static HashMap<String Double> needvalues=new HashMap<>();
    
    public static HashMap<String,Double> getNeedValues(Actor actor) {
        if(needvalues.size() > 0) {
            needvalues.clear();
        }
        HashMap<String,String> needData= MainTask.getPageData(actor);
        value1= Double.parseDouble(needData.get("dataValue1").replaceAll(",",""));
        value2= Double.parseDouble(needData.get("dataValue2").replaceAll(",",""));

        needvalues.put("dataValue1",dataValue1);
        needvalues.put("dataValue2",dataValue2);
        
        logger.info("Get some values......", needvalues);
        return needvalues;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值