map初始化几种方式

本文介绍了在C++中初始化map的三种常见方法:直接赋值、直接插入和列表初始化。通过示例展示了如何使用这三种方式创建并填充map对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/直接赋值

map<string, int> m1;
m1[string(“abc”)] = 1;
m1[“def”] = 2;
///直接插入
map<string, int> m2;
m2.insert({ “abc”, 1 });
m2.insert(make_pair(string(“def”), 2));
m2.insert(pair<string, int>(string(“ghi”), 3));
//列表初始化

map<string,int> m3 = {
{“string”,1}, {“sec”,2}, {“trd”,3}
};
map<string,string> m4 = {
{“first”,“second”}, {“third”,“fourth”},
{“fifth”,“sixth”}, {“begin”,“end”}
};

### 初始化 Map 数据结构 在 Java 中,`Map` 是一种键值对集合接口,提供了多种实现方式如 `HashMap`, `TreeMap`, 和 `ConcurrentHashMap` 等。下面展示几种常见的初始化方法。 #### 使用 HashMap 初始化 这是最常用的方式之一,适用于大多数场景下的无序映射表创建: ```java import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { // 创建并初始化一个哈希映射 Map<String, Integer> hashMap = new HashMap<>() {{ put("apple", 1); put("banana", 2); put("orange", 3); }}; System.out.println(hashMap); } } ``` #### TreeMap初始化与自定义排序逻辑 当需要按照特定顺序存储条目时可以考虑使用 `TreeMap`. 下面的例子展示了基于商品名称长度来进行排序的实例[^1]: ```java import java.util.Comparator; import java.util.TreeMap; class Product implements Comparable<Product> { private String name; public Product(String n){ this.name=n; } @Override public int compareTo(Product o) { return Integer.compare(this.getName().length(),o.getName().length()); } public String getName(){ return name; } } public class Test{ public static void main(String []args){ Comparator<Product> comp = (p1,p2)->Integer.valueOf(p1.getName().length()).compareTo(Integer.valueOf(p2.getName().length())); TreeMap<Product,Integer> treeMap=new TreeMap<>(comp); treeMap.put(new Product("Apple"),90); treeMap.put(new Product("Banana"),87); treeMap.put(new Product("Orange"),65); for(var entry :treeMap.entrySet()){ System.out.printf("%s:%d\n",entry.getKey().getName(),entry.getValue()); } } } ``` #### 并发环境中的初始化 - ConcurrentHashMap 对于高并发的应用场合,则推荐采用线程安全性能更好的 `ConcurrentHashMap`. ```java import java.util.concurrent.ConcurrentHashMap; public class ConcurrentExample { public static void main(String[] args) { // 构建并填充并发哈希映射 ConcurrentHashMap<Integer, String> concurrentHashMap = new ConcurrentHashMap<>(); concurrentHashMap.put(1,"one"); concurrentHashMap.put(2,"two"); System.out.println(concurrentHashMap); } } ``` 以上三种方式分别对应不同需求下 `Map` 类型的选择及其基本用法介绍。每种类型的特性决定了其适用范围,在实际开发过程中可根据具体业务特点选取合适的容器类型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自由技艺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值