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;
}
}