Android studio 027 List Map HashMap

List用法
            List<String> person=new ArrayList<>();
            person.add("jackie");   //索引为0  //.add(e)
            person.add("peter");    //索引为1
            person.add("annie");    //索引为2
            person.add("martin");   //索引为3
            person.add("marry");    //索引为4

            person.remove(3);   //.remove(index)
            person.remove("marry");     //.remove(Object o)

            String per="";
            per=person.get(1);
            System.out.println(per);    ////.get(index)

            for (int i = 0; i < person.size(); i++) {
                System.out.println(person.get(i));  //.get(index)
            }


map
public class MapDemo {
    public static void main(String[] args) {
        //创建Map对象
        Map<String, String> map = new HashMap<String,String>();       //数据采用的哈希表结构
        //给map中添加元素
        map.put("星期一", "Monday");
        map.put("星期日", "Sunday");
        System.out.println(map); // {星期日=Sunday, 星期一=Monday}
 
        //当给Map中添加元素,会返回key对应的原来的value值,若key没有对应的值,返回null
        System.out.println(map.put("星期一", "Mon")); // Monday
        System.out.println(map); // {星期日=Sunday, 星期一=Mon}
 
        //根据指定的key获取对应的value
        String en = map.get("星期日");
        System.out.println(en); // Sunday
        
        //根据key删除元素,会返回key对应的value值
        String value = map.remove("星期日");
        System.out.println(value); // Sunday
        System.out.println(map); // {星期一=Mon}
    }
}

HashMap
HashMap<String , Double> map = new HashMap<String , Double>();   
map.put("语文" , 80.0);   
map.put("数学" , 89.0);   
map.put("英语" , 78.2);  

<think> 嗯,用户这次问的是Android StudioMap的使用方法。从引用内容看,用户似乎混淆了几个概念:引用[1]提到的是ffmpeg调试的source-map配置,引用[2]是SimpleAdapter的参数说明,引用[3]讲assets资源文件,引用[4]则是注释设置方法。这些其实和Map集合都没直接关系。 用户可能正在开发Android应用,需要处理键值对数据结构。真正的需求应该是想了解Java的Map接口在Android Studio环境下的具体应用场景和实现方式。考虑到Android开发的特性,需要重点解释两类常见使用场景:基础集合操作和适配器数据绑定。 注意到用户引用[2]提到了SimpleAdapter,这其实是个重要线索。虽然引用本身在解释参数,但恰恰说明用户可能在尝试实现列表功能。应该强调HashMap在SimpleAdapter中的核心作用——因为SimpleAdapter要求的data参数就是List<Map<String, ?>>这种结构。 准备从三个维度组织回答:首先用最简明的代码展示Map的基础操作,避免用户被泛型等概念吓到;然后具体说明在SimpleAdapter中的完整实现流程,因为这是Android特有的重点场景;最后补充实用技巧,比如类型安全提示和性能考量。 特别注意要区分Java集合框架的Map和谷歌的Map API(Google Maps)。用户没有提到地图相关功能,所以排除后者。需要确保所有示例代码都经过Android Studio环境验证的标准写法,比如用HashMap而不是HashTable。 用户似乎偏好实用型指导,所以每个代码块都配上使用场景说明。比如entrySet遍历那里特意强调“数据展示场景”,因为Android开发中遍历多用于视图绑定。还考虑补充一个警告:在Android平台上要避免使用枚举作为key,这点和普通Java开发不同。 </think> 在Android Studio中使用`Map`(映射)集合的方法主要涉及数据存储、适配器绑定及资源处理。以下是详细指南和示例: --- ### **一、Map基础操作** `Map`用于存储键值对(Key-Value),常用实现类:`HashMap`、`LinkedHashMap`。 ```java // 创建Map并添加数据 Map<String, Integer> userScores = new HashMap<>(); userScores.put("Alice", 95); userScores.put("Bob", 88); // 获取值 int bobScore = userScores.get("Bob"); // 88 // 遍历Map(推荐方式) for (Map.Entry<String, Integer> entry : userScores.entrySet()) { String name = entry.getKey(); int score = entry.getValue(); Log.d("MAP_DEMO", name + ": " + score); } ``` --- ### **二、在适配器中使用Map(如ListView)** 结合`SimpleAdapter`将`Map`数据绑定到列表项,需构造`List<Map<String, ?>>`结构[^2]: ```java // 1. 准备数据:每个Map代表一行数据 List<Map<String, String>> dataList = new ArrayList<>(); Map<String, String> item1 = new HashMap<>(); item1.put("name", "Alice"); item1.put("age", "25"); dataList.add(item1); Map<String, String> item2 = new HashMap<>(); item2.put("name", "Bob"); item2.put("age", "30"); dataList.add(item2); // 2. 定义键名与布局控件ID的映射 String[] fromKeys = {"name", "age"}; // Map中的键 int[] toViewIds = {R.id.tv_name, R.id.tv_age}; // 布局中的TextView ID // 3. 创建SimpleAdapter SimpleAdapter adapter = new SimpleAdapter( this, // Context dataList, // 数据源:List<Map> R.layout.list_item, // 列表项布局 fromKeys, // 数据键名 toViewIds // 目标视图ID ); // 4. 设置适配器 ListView listView = findViewById(R.id.list_view); listView.setAdapter(adapter); ``` --- ### **三、处理资源文件中的Map数据** 从`assets`加载JSON/Properties文件并解析为Map[^3]: ```java // 从assets读取JSON文件 try (InputStream is = getAssets().open("config.json")) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder jsonStr = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { jsonStr.append(line); } // 解析JSON到Map JSONObject jsonObj = new JSONObject(jsonStr.toString()); Map<String, String> configMap = new HashMap<>(); Iterator<String> keys = jsonObj.keys(); while (keys.hasNext()) { String key = keys.next(); configMap.put(key, jsonObj.getString(key)); } } catch (Exception e) { e.printStackTrace(); } ``` --- ### **四、高级技巧** 1. **类型安全** 使用泛型明确键值类型,避免类型转换错误: ```java Map<String, Double> productPrices = new HashMap<>(); productPrices.put("Laptop", 1299.99); ``` 2. **空值处理** 使用`getOrDefault`避免`NullPointerException`: ```java int score = userScores.getOrDefault("Unknown", 0); // 键不存在时返回0 ``` 3. **性能优化** - 频繁插入/删除:用`LinkedHashMap`保持顺序 - 高并发场景:用`ConcurrentHashMap` - 内存敏感场景:用`SparseArray`替代`Map<Integer, Object>` --- ### **常见问题解决** - **编译路径冲突**:若涉及Native库(如FFmpeg),确保`target.source-map`配置指向正确路径[^1]。 - **数据绑定失败**:检查`from`键名与`Map`中的键是否完全一致(大小写敏感)[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值