Java语言读取的内容用new来生成字典,遇到重复的键值如何对其对调,以避免其重复出现呢?解决冲突的代码的思路
没看明白,请详细说下,或者私信
不知道你这个问题是否已经解决, 如果还没有解决的话:import java.util.Arrays;
//内部类
public class Test
{
public static void main(String[] args)
{
// 普通int变量 num
int num = 10;
System.out.println("改变前:" + num);
change(num);
System.out.println("改变后:" + num);
// a数组 静态数组 不使用new
int a[] = { 1, 2, 3, 4, 5 };
System.out.println(a.toString());
System.out.println("改变前:" + Arrays.toString(a));
change(a);
System.out.println("改变后:" + Arrays.toString(a));
// b数组 动态数组 使用new
int b[] = new int[5];
for (int i = 0; i < 5; i++)
{
b[i] = 10 + i;
}
System.out.println(b.toString());
System.out.println("改变前:" + Arrays.toString(b));
change(b);
System.out.println("改变后:" + Arrays.toString(b));
Test test = new Test();
System.out.println(test.toString());
}
public static void change(int[] arr)
{
arr[0] = 100;
}
// 重载
public static void change(int num)
{
num++;
}
}
可以使用Java中的ConcurrentHashMap来避免重复出现。ConcurrentHashMap是Java 5提供的,它是线程安全的HashMap,比HashTable的扩展性更好。在需要线程安全的情况下,可以使用ConcurrentHashMap,它的底层数据结构采用了分片的方式,将整个数组分为若干个小的HashTable,每个小的HashTable都有自己的锁,这样多个线程同时操作时,只会锁住需要操作的小HashTable,而不是整个数组。同时,ConcurrentHashMap还提供了一些原子操作,如putIfAbsent()、replace()等,能够更好地支持并发操作,避免重复出现。下面是使用ConcurrentHashMap的代码示例:
import java.util.concurrent.ConcurrentHashMap;
public class TestConcurrentHashMap {
public static void main(String[] args) {
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<String, Integer>();
map.put("key1", 1);
map.put("key1", 2);
System.out.println(map.get("key1")); // 输出2
}
}