List集合能放进Map集合吗?

本文详细介绍了如何将List集合转换为Map,并展示了直接放入List到Map的方法,同时探讨了将Map转换为List的不同策略,包括直接加入、插入单个值和插入多个值的情况。

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

List into Map

package list_into_map;

import java.awt.image.Kernel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * list 集合放在map中
 * @author root
 * @version V1.0
 * @Package list_into_map
 * @date 2020/9/9 19:09
 */
public class List_Into_Map {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        Map<Integer,String> map = new HashMap<Integer,String>();
        list.add("a");
        list.add("b");
        list.add("c");

//取出元素一个一个存放
        for(int i = 0; i < list.size(); i++){
            map.put(i,list.get(i));
        }
        for (Map.Entry<Integer,String> entry : map.entrySet()) {
            System.out.println(entry.getKey()+","+entry.getValue());
        }

        //map.forEach((k,v) -> System.out.println(k+" "+ v));

        test1(list);
        test2();

    }

//直接放入
    public static  void test1(List list){
        Map<String,List> map = new HashMap<String,List>();
        //list 放在map中
        map.put("list",list);
        //取出的时候注意类型转换
        List list2 = (List)map.get("list");
        for (Object item : list2) {
            System.out.println(item);
        }
    }

    public static void test2(){
        List list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");

        Map<String,String> map = new HashMap<String,String>(list.size());
        for (int i = 0; i < list.size(); i++) {
            map.put(list.get(i).toString(), list.get(i).toString());
        }
        map.forEach((k,v)->System.out.println("Item : " + k + " Count : " + v));

    }
}

Map into List

package Test;
import java.util.*;


public class Test {

public static void main(String[] args) {

//第一种:直接加入
        List<Map<String, Object>> list1 = new ArrayList<Map<String, Object>>();
        Map<String, Object> m1 = new HashMap<String, Object>();
        m1.put("age", "55");
        m1.put("name", "66");
        list1.add(m1);
        System.out.println(list1);
//[{name=66, age=55}]
//第二种:直接插入,但是key永远只对应一个value
        List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
        Map<String, Object> m = new HashMap<String, Object>();
        m.put("age", "55");
        m.put("name", "66");
        list2.add(m);
        for (Map<String, Object> m2 : list2) {
            m2.put("key", "123");
        }
        System.out.println(list2);
//[{name=66, age=55, key=123}]
//第三种:能插入多个值,就是一个key能对应多个value
        List<Map<String, Object>> list3 = new ArrayList<Map<String, Object>>();
        Map<String, Object> m3 = new HashMap<String, Object>();
        m3.put("age", "55");
        m3.put("name", "66");
        for (int i = 0; i < 2; i++) {
            Map<String, Object> mm = new HashMap<String, Object>();
            mm.putAll(m3);
            mm.put("key1", i);
            list3.add(mm);
        }
        System.out.println(list3);
//[{name=66, key1=0, age=55}, {name=66, key1=1, age=55}]

    }

}

 

### Java集合编程练习题 #### 去除重复元素并按降序排列 为了去除整数数组中的重复元素并将它们按照降序排列,可以使用`TreeSet`来自动去重和排序。通过指定比较器`Collections.reverseOrder()`,可以使`TreeSet`以降序方式存储数据。 ```java import java.util.*; public class Main { public static void main(String[] args) { Integer[] arr = {1, 2, 2, 2, 3, 3, 4, 5, 6}; TreeSet<Integer> integers = new TreeSet<>(Collections.reverseOrder()); integers.addAll(Arrays.asList(arr)); System.out.println(integers); } } ``` 此代码片段展示了如何利用`TreeSet`特性完成任务[^1]。 #### 处理随机数并筛选特定范围内的数值 对于生成一定数量的随机数,并从中挑选出符合条件的数据存入列表的操作,可以通过循环配合条件判断语句轻松实现: ```java public class Test1 { public static void main(String[] args) { int[] a = new int[10]; Random r = new Random(); for (int i = 0; i < a.length; i++) { int num = r.nextInt(100) + 1; a[i] = num; } List<Integer> list = new ArrayList<>(); for (int value : a) { if (value >= 10) { list.add(value); } } System.out.println(list); } } ``` 这段程序先填充了一个含有十个介于1至100之间随机整数的一维数组;接着遍历这个数组,将所有不小于十的元素加入到了一个动态长度的列表里最后输出结果[^2]。 #### 存储自定义对象到集合中 当涉及到更复杂的数据结构比如学生信息或者书籍详情时,则可能需要用到带有键值映射特性的容器——即实现了`Map`接口的各种类,或者是能够容纳任意类型的泛型化容器如`ArrayList<Student>`等。这里给出了一种场景下的解决方案:假设存在一个名为`Student`的实体类,它包含了三个字段分别是名字(`String`)、年龄(`int`)以及分数(`double`),那么就可以像下面这样操作: ```java class Student { private String name; private int age; private double score; // 构造函数、getter/setter 方法省略... } // 主方法部分 List<Student> students = Arrays.asList( new Student("Alice", 20, 87), new Student("Bob", 22, 92), ... ); for(Student student : students){ System.out.printf("%s %d %.2f\n",student.getName(),student.getAge(),student.getScore()); } ``` 上述例子说明了怎样创建多个学生的实例并且把它们放进一个列表当中以便后续处理[^4]。 #### 实现可比较接口来进行定制化的排序逻辑 如果希望基于某些业务需求来自定义排序规则的话,可以让某个类继承或实现相应的接口,例如让`Book`类支持自然顺序比较就需要让它实现`Comparable<Book>`接口,并覆写其中的方法用于描述具体怎么比大小。这允许开发者灵活地调整不同情况下所需遵循的不同排序准则。 ```java class Book implements Comparable<Book>{ private String name; private double price; @Override public int compareTo(Book o) { return Double.compare(this.price,o.getPrice()); } // getter 和 setter 省略... public boolean equals(Object obj){ if(obj instanceof Book){ return this.name.equals(((Book)obj).getName()) && Math.abs(this.price - ((Book)obj).getPrice())<0.0001 ; }else{ return false; } } // hashCode() 的实现也应考虑进来以保持一致性 } ``` 以上就是几个典型的Java集合应用案例及其对应的编码实践[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值