Java学习笔记-Map的一些用法

几种常用的map:

Map<String, Integer> curMap = new ConcurrentHashMap<String, Integer>();
Map<String, Object> hMap = Maps.newHashMap();
Map<String, Integer> curMap = Maps.newConcurrentMap();

根据Map.Entry()遍历key和value

Set<Map.Entry<String, String>> entryseSet=map.entrySet();
 
for (Map.Entry<String, String> entry:entryseSet) {
 
    System.out.println(entry.getKey()+","+entry.getValue());
 
}

根据KeySet进行遍历,可获取key和value

Set<String> set = map.keySet();
 
for (String s:set) {
 
    System.out.println(s+","+map.get(s));
 
}

根据Values进行遍历,只可获取value

Set<String> set = map.values();

        for (String s:set) {

            System.out.println(s);

        }

Map.getOrDefault()

用法:Map.getOrDefault(key,默认值);

Map中会存储一一对应的key和value。
如果 在Map中存在key,则返回key所对应的的value。
如果 在Map中不存在key,则返回默认值。

public class Demo {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("张三", 23);
        map.put("赵四", 24);
        map.put("王五", 25);
        String age= map.getOrDefault("赵四", 30);
        System.out.println(age);// 24,map中存在"赵四",使用其对应值24
        String age = map.getOrDefault("刘能", 30);
        System.out.println(age);// 30,map中不存在"刘能",使用默认值30
    }
}

### 回答1: maps.newconcurrentmap() 是一个 Go 语言中的函数,用于创建一个并发安全的 map(映射表)。在多个 goroutine(协程)同时访问该 map 时,可以避免出现数据竞争(race condition)等并发问题。 ### 回答2: maps.newconcurrentmap()是一个在Google Guava库中提供的方法。这个方法用于创建一个基于哈希表实现的线程安全的ConcurrentMap对象。ConcurrentMapJava中的一个接口,用于表示一组键值对,其中的操作都是线程安全的。线程安全的ConcurrentMap在多线程环境下可以很好地控制访问共享资源的顺序和方式。 在ConcurrentMap中,和HashMap一样,每个键都需要是唯一的。通过使用哈希表,ConcurrentMap可以很快地定位到对应的值,而且由于它是线程安全的,它可以在并发场景下高效地进行插入、删除和读取操作。在Java中,ConcurrentMap在多线程编程场景中是非常常用的一种容器。 Google Guava库的maps.newconcurrentmap()方法可以用来创建一个线程安全的ConcurrentMap。这个方法返回的对象是一个ConcurrentMapBuilder实例,它可以用来配置ConcurrentMap的一些参数,比如初始容量和负载因子等。ConcurrentMapBuilder还提供了一些其他的方法,比如withConcurrencyLevel()来指定并发级别,或者weakKeys()和weakValues()来使用弱引用来管理键或值对象。 maps.newconcurrentmap()提供了一种快速创建线程安全的ConcurrentMap的方法,而且它还可以用来定制化ConcurrentMap的一些参数。如果需要在多线程编程场景中使用ConcurrentMap,那么使用maps.newconcurrentmap()方法来创建对象是一个很好的选择。 ### 回答3: maps.newConcurrentMap()是Golang中的一种并发安全的Map结构,它可以在多个goroutine同时读写时保证线程安全。当我们需要在高并发场景下使用Map时,我们可以使用maps.newConcurrentMap()以避免出现竞争条件和其它并发问题。 在Golang中,Map是一种非常常用的数据结构,可以用来将key-value按照key排序并存储在一个容器中。然而,Map是非线程安全的数据结构,而当多个goroutine并发访问同一个Map时,可能会出现多种并发问题,例如竞争条件、死锁和数据丢失等问题。为了解决这些问题,我们可以使用maps.newConcurrentMap()。 当我们使用maps.newConcurrentMap()时,它会返回一个与Map类似的并发安全的结构。它支持并发读写,而不会导致死锁、竞争条件和数据丢失等问题。即使在高并发环境下,它也可以提供更好的性能和稳定性。 当我们需要在Golang中使用Map,并且我们的程序中需要进行并发操作时,就可以使用maps.newConcurrentMap()。而由于该结构是并发安全的,不会出现竞争条件和其它并发问题,所以我们可以在任何需要使用Map的场景中使用它,例如Web服务、后端任务队列、数据库连接池等。 总之,maps.newConcurrentMap()是Golang中的一个非常有用的数据结构,它可以帮助我们解决多线程下Map的并发问题,并为高并发场景下的程序提供更好的性能和稳定性。因此,我们在需要使用Map时,应该优先考虑使用该结构来保证程序的稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值