konv1984 2017-02-26 14:10 采纳率: 100%
浏览 9724
已采纳

java 如何将list拆分成多个list

List ls = new ArrayList ();
Map m =new HashMap();
m.put("NAME","ZS");
m.put("AGE","45");
m.put("SEX","Y");
Map m1 =new HashMap();
m1.put("NAME","LIX");
m1.put("AGE","12");
m1.put("SEX","Y");
Map m2 =new HashMap();
m2.put("NAME","XF");
m2.put("AGE","29");
m2.put("SEX","N");
....
ls.add(m);
ls.add(m1);
ls.add(m2);
......
ls.add(mn);
list有n个元素。如何根据m的AGE属性,获得多个list,每个list中只存放相同age的map。

  • 写回答

6条回答 默认 最新

  • hxw810710 2017-02-27 01:39
    关注

    如果你的意思是年龄相等的放在一起的话,那么:

    import java.util.ArrayList;
    /**

    • java 如何将list拆分成多个list
    • List ls = new ArrayList (); Map m =new HashMap(); m.put("NAME","ZS"); m.put("AGE","45"); m.put("SEX","Y"); Map m1 =new HashMap(); m1.put("NAME","LIX"); m1.put("AGE","12"); m1.put("SEX","Y"); Map m2 =new HashMap(); m2.put("NAME","XF"); m2.put("AGE","29"); m2.put("SEX","N"); .... ls.add(m); ls.add(m1); ls.add(m2); ...... ls.add(mn); list有n个元素。如何根据m的AGE属性,获得多个list,每个list中只存放相同age的map。 */ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Random; import java.util.Set;

    public class Splitlist {
    //用来存储拆分后的list
    static Map subListMap=new HashMap();
    //假设有300个map,下面的循环为其赋值
    static List> list=new ArrayList>();
    //用于临时存储subList引用的变量
    static List> middleList=null;
    public static void main (String[] args){
    for(int i=0;i Map m=new HashMap();
    m.put("NAME", "name"+i);
    m.put("AGE", new Random().nextInt(100));
    m.put("SEX", i%2==0?"男":"女");
    list.add(m);
    }

    //假设年龄在0到100岁之间,那么:
        for(int age=1;age<100;age++){
            //用于计数,当count为0时new一个List集合,并且存入subListMap。
            int count=0;
            for(int i=0;i<list.size();i++){
                if(list.get(i).get("AGE").equals(age)){
                   List<Map<String,Object>> subList=getList(count);
                   subList.add(list.get(i));
                   if(count==0){
                       subListMap.put("AGE为"+age+"岁的子集:", subList);
                   }
                    count++;
    
                }
            }
        }
    
        Set<Entry<String,Object>> entrySet=subListMap.entrySet();
    
        for(Entry<String,Object> es:entrySet){
            System.out.println(es.getKey());
            System.out.println(es.getValue().toString());
        }
    
    
    
    
    }
    
    static List<Map<String,Object>> getList(int n){
        if(n==0){
            List<Map<String,Object>> li= new ArrayList<Map<String,Object>>();
            middleList=li;
        }
        return middleList;
    
    }
    
    
    控制台打印结果是:
    
    
    AGE为20岁的子集:
    

    [{SEX=女, NAME=name183, AGE=20}, {SEX=男, NAME=name250, AGE=20}, {SEX=男, NAME=name262, AGE=20}, {SEX=男, NAME=name266, AGE=20}, {SEX=女, NAME=name297, AGE=20}]
    AGE为34岁的子集:
    [{SEX=男, NAME=name36, AGE=34}, {SEX=男, NAME=name96, AGE=34}, {SEX=女, NAME=name113, AGE=34}]
    AGE为51岁的子集:
    [{SEX=男, NAME=name38, AGE=51}, {SEX=男, NAME=name74, AGE=51}, {SEX=男, NAME=name168, AGE=51}, {SEX=女, NAME=name221, AGE=51}, {SEX=男, NAME=name234, AGE=51}]
    AGE为79岁的子集:
    [{SEX=男, NAME=name128, AGE=79}]
    AGE为26岁的子集:
    [{SEX=男, NAME=name30, AGE=26}, {SEX=男, NAME=name62, AGE=26}, {SEX=女, NAME=name181, AGE=26}, {SEX=男, NAME=name184, AGE=26}, {SEX=女, NAME=name241, AGE=26}]
    AGE为5岁的子集:
    [{SEX=男, NAME=name42, AGE=5}, {SEX=男, NAME=name70, AGE=5}, {SEX=女, NAME=name101, AGE=5}, {SEX=女, NAME=name131, AGE=5}, {SEX=女, NAME=name147, AGE=5}, {SEX=女, NAME=name155, AGE=5}, {SEX=男, NAME=name160, AGE=5}, {SEX=男, NAME=name242, AGE=5}]
    AGE为57岁的子集:
    [{SEX=女, NAME=name149, AGE=57}, {SEX=女, NAME=name245, AGE=57}, {SEX=男, NAME=name286, AGE=57}]
    AGE为12岁的子集:
    [{SEX=女, NAME=name61, AGE=12}, {SEX=男, NAME=name280, AGE=12}]
    AGE为65岁的子集:
    [{SEX=女, NAME=name65, AGE=65}]
    AGE为73岁的子集:
    [{SEX=男, NAME=name26, AGE=73}, {SEX=女, NAME=name35, AGE=73}, {SEX=女, NAME=name39, AGE=73}, {SEX=男, NAME=name194, AGE=73}]
    AGE为49岁的子集:
    [{SEX=女, NAME=name75, AGE=49}, {SEX=女, NAME=name175, AGE=49}, {SEX=女, NAME=name199, AGE=49}, {SEX=女, NAME=name223, AGE=49}, {SEX=男, NAME=name258, AGE=49}]
    AGE为35岁的子集:
    [{SEX=男, NAME=name14, AGE=35}, {SEX=女, NAME=name165, AGE=35}, {SEX=女, NAME=name189, AGE=35}]
    AGE为88岁的子集:
    [{SEX=女, NAME=name81, AGE=88}, {SEX=女, NAME=name265, AGE=88}]
    AGE为74岁的子集:
    [{SEX=男, NAME=name144, AGE=74}, {SEX=男, NAME=name162, AGE=74}, {SEX=女, NAME=name237, AGE=74}]
    AGE为43岁的子集:
    [{SEX=男, NAME=name54, AGE=43}, {SEX=男, NAME=name114, AGE=43}, {SEX=男, NAME=name202, AGE=43}]
    AGE为27岁的子集:
    [{SEX=女, NAME=name111, AGE=27}, {SEX=男, NAME=name212, AGE=27}]
    AGE为96岁的子集:
    [{SEX=女, NAME=name277, AGE=96}]
    AGE为21岁的子集:
    [{SEX=女, NAME=name11, AGE=21}, {SEX=女, NAME=name95, AGE=21}, {SEX=男, NAME=name180, AGE=21}, {SEX=女, NAME=name187, AGE=21}, {SEX=男, NAME=name260, AGE=21}]
    AGE为82岁的子集:
    [{SEX=女, NAME=name57, AGE=82}, {SEX=女, NAME=name79, AGE=82}, {SEX=男, NAME=name80, AGE=82}, {SEX=女, NAME=name173, AGE=82}, {SEX=女, NAME=name185, AGE=82}, {SEX=女, NAME=name269, AGE=82}]
    AGE为90岁的子集:
    [{SEX=女, NAME=name219, AGE=90}]
    AGE为41岁的子集:
    [{SEX=女, NAME=name31, AGE=41}, {SEX=女, NAME=name195, AGE=41}, {SEX=女, NAME=name205, AGE=41}]
    AGE为44岁的子集:
    [{SEX=女, NAME=name121, AGE=44}, {SEX=女, NAME=name159, AGE=44}]
    AGE为19岁的子集:
    [{SEX=女, NAME=name161, AGE=19}, {SEX=女, NAME=name209, AGE=19}, {SEX=男, NAME=name270, AGE=19}, {SEX=女, NAME=name289, AGE=19}]
    AGE为55岁的子集:
    [{SEX=女, NAME=name73, AGE=55}]
    AGE为47岁的子集:
    [{SEX=女, NAME=name7, AGE=47}, {SEX=男, NAME=name88, AGE=47}, {SEX=女, NAME=name171, AGE=47}, {SEX=男, NAME=name210, AGE=47}]
    AGE为30岁的子集:
    [{SEX=男, NAME=name2, AGE=30}, {SEX=男, NAME=name20, AGE=30}, {SEX=女, NAME=name77, AGE=30}, {SEX=男, NAME=name100, AGE=30}, {SEX=男, NAME=name236, AGE=30}, {SEX=男, NAME=name256, AGE=30}]
    AGE为36岁的子集:
    [{SEX=男, NAME=name158, AGE=36}]
    AGE为39岁的子集:
    [{SEX=男, NAME=name58, AGE=39}, {SEX=女, NAME=name137, AGE=39}]
    AGE为33岁的子集:
    [{SEX=女, NAME=name153, AGE=33}, {SEX=女, NAME=name273, AGE=33}, {SEX=男, NAME=name296, AGE=33}]
    AGE为60岁的子集:
    [{SEX=女, NAME=name117, AGE=60}, {SEX=男, NAME=name172, AGE=60}]
    AGE为52岁的子集:
    [{SEX=女, NAME=name67, AGE=52}, {SEX=女, NAME=name261, AGE=52}]
    AGE为28岁的子集:
    [{SEX=女, NAME=name33, AGE=28}, {SEX=女, NAME=name107, AGE=28}]
    AGE为11岁的子集:
    [{SEX=女, NAME=name71, AGE=11}, {SEX=女, NAME=name93, AGE=11}, {SEX=女, NAME=name201, AGE=11}, {SEX=女, NAME=name217, AGE=11}, {SEX=女, NAME=name233, AGE=11}, {SEX=女, NAME=name283, AGE=11}]
    AGE为92岁的子集:
    [{SEX=女, NAME=name15, AGE=92}, {SEX=女, NAME=name125, AGE=92}, {SEX=女, NAME=name295, AGE=92}]
    AGE为95岁的子集:
    [{SEX=男, NAME=name52, AGE=95}]
    AGE为4岁的子集:
    [{SEX=女, NAME=name151, AGE=4}]
    AGE为17岁的子集:
    [{SEX=女, NAME=name91, AGE=17}, {SEX=男, NAME=name104, AGE=17}, {SEX=女, NAME=name115, AGE=17}, {SEX=男, NAME=name196, AGE=17}]
    AGE为25岁的子集:
    [{SEX=女, NAME=name53, AGE=25}, {SEX=女, NAME=name139, AGE=25}, {SEX=男, NAME=name204, AGE=25}]
    AGE为14岁的子集:
    [{SEX=男, NAME=name200, AGE=14}]
    AGE为1岁的子集:
    [{SEX=男, NAME=name218, AGE=1}]
    AGE为22岁的子集:
    [{SEX=女, NAME=name9, AGE=22}, {SEX=女, NAME=name59, AGE=22}, {SEX=男, NAME=name142, AGE=22}]
    AGE为87岁的子集:
    [{SEX=女, NAME=name3, AGE=87}, {SEX=女, NAME=name23, AGE=87}, {SEX=女, NAME=name29, AGE=87}, {SEX=女, NAME=name47, AGE=87}, {SEX=男, NAME=name208, AGE=87}]
    AGE为7岁的子集:
    [{SEX=女, NAME=name37, AGE=7}, {SEX=男, NAME=name102, AGE=7}, {SEX=女, NAME=name197, AGE=7}, {SEX=女, NAME=name239, AGE=7}]
    AGE为98岁的子集:
    [{SEX=男, NAME=name8, AGE=98}, {SEX=男, NAME=name10, AGE=98}, {SEX=男, NAME=name24, AGE=98}, {SEX=女, NAME=name41, AGE=98}, {SEX=男, NAME=name174, AGE=98}, {SEX=女, NAME=name259, AGE=98}, {SEX=女, NAME=name263, AGE=98}, {SEX=女, NAME=name287, AGE=98}]
    AGE为62岁的子集:
    [{SEX=女, NAME=name63, AGE=62}, {SEX=男, NAME=name278, AGE=62}]
    AGE为37岁的子集:
    [{SEX=男, NAME=name48, AGE=37}, {SEX=男, NAME=name188, AGE=37}]
    AGE为23岁的子集:
    [{SEX=女, NAME=name123, AGE=23}, {SEX=男, NAME=name232, AGE=23}]
    AGE为68岁的子集:
    [{SEX=男, NAME=name50, AGE=68}, {SEX=男, NAME=name152, AGE=68}, {SEX=男, NAME=name238, AGE=68}]
    AGE为76岁的子集:
    [{SEX=女, NAME=name105, AGE=76}]
    AGE为15岁的子集:
    [{SEX=女, NAME=name5, AGE=15}, {SEX=男, NAME=name126, AGE=15}]
    AGE为54岁的子集:
    [{SEX=女, NAME=name17, AGE=54}, {SEX=男, NAME=name130, AGE=54}]
    AGE为99岁的子集:
    [{SEX=女, NAME=name231, AGE=99}]
    AGE为8岁的子集:
    [{SEX=女, NAME=name83, AGE=8}, {SEX=女, NAME=name87, AGE=8}, {SEX=女, NAME=name213, AGE=8}, {SEX=女, NAME=name251, AGE=8}, {SEX=女, NAME=name267, AGE=8}, {SEX=女, NAME=name281, AGE=8}]
    AGE为70岁的子集:
    [{SEX=男, NAME=name108, AGE=70}, {SEX=男, NAME=name112, AGE=70}, {SEX=男, NAME=name140, AGE=70}, {SEX=男, NAME=name148, AGE=70}, {SEX=男, NAME=name246, AGE=70}, {SEX=女, NAME=name275, AGE=70}]
    AGE为84岁的子集:
    [{SEX=男, NAME=name44, AGE=84}]
    AGE为31岁的子集:
    [{SEX=男, NAME=name92, AGE=31}, {SEX=男, NAME=name164, AGE=31}]
    AGE为32岁的子集:
    [{SEX=男, NAME=name18, AGE=32}, {SEX=女, NAME=name21, AGE=32}, {SEX=女, NAME=name179, AGE=32}, {SEX=女, NAME=name203, AGE=32}]
    AGE为71岁的子集:
    [{SEX=男, NAME=name118, AGE=71}, {SEX=男, NAME=name138, AGE=71}, {SEX=男, NAME=name198, AGE=71}, {SEX=男, NAME=name216, AGE=71}, {SEX=男, NAME=name276, AGE=71}]
    AGE为38岁的子集:
    [{SEX=男, NAME=name66, AGE=38}, {SEX=男, NAME=name116, AGE=38}, {SEX=女, NAME=name133, AGE=38}, {SEX=男, NAME=name166, AGE=38}, {SEX=女, NAME=name193, AGE=38}, {SEX=男, NAME=name274, AGE=38}, {SEX=女, NAME=name285, AGE=38}]
    AGE为46岁的子集:
    [{SEX=男, NAME=name56, AGE=46}, {SEX=女, NAME=name129, AGE=46}, {SEX=女, NAME=name207, AGE=46}, {SEX=男, NAME=name294, AGE=46}]
    AGE为63岁的子集:
    [{SEX=女, NAME=name109, AGE=63}]
    AGE为2岁的子集:
    [{SEX=男, NAME=name78, AGE=2}, {SEX=女, NAME=name271, AGE=2}, {SEX=男, NAME=name288, AGE=2}]
    AGE为85岁的子集:
    [{SEX=女, NAME=name143, AGE=85}]
    AGE为40岁的子集:
    [{SEX=男, NAME=name68, AGE=40}, {SEX=男, NAME=name94, AGE=40}, {SEX=女, NAME=name191, AGE=40}, {SEX=男, NAME=name206, AGE=40}, {SEX=男, NAME=name284, AGE=40}]
    AGE为93岁的子集:
    [{SEX=男, NAME=name0, AGE=93}, {SEX=男, NAME=name46, AGE=93}, {SEX=男, NAME=name76, AGE=93}]
    AGE为16岁的子集:
    [{SEX=女, NAME=name85, AGE=16}, {SEX=女, NAME=name253, AGE=16}, {SEX=男, NAME=name268, AGE=16}, {SEX=男, NAME=name282, AGE=16}]
    AGE为24岁的子集:
    [{SEX=男, NAME=name6, AGE=24}]
    AGE为69岁的子集:
    [{SEX=女, NAME=name145, AGE=69}, {SEX=女, NAME=name227, AGE=69}]
    AGE为77岁的子集:
    [{SEX=女, NAME=name119, AGE=77}, {SEX=男, NAME=name120, AGE=77}, {SEX=女, NAME=name163, AGE=77}, {SEX=男, NAME=name170, AGE=77}, {SEX=男, NAME=name272, AGE=77}, {SEX=女, NAME=name293, AGE=77}]
    AGE为9岁的子集:
    [{SEX=男, NAME=name90, AGE=9}]
    AGE为83岁的子集:
    [{SEX=女, NAME=name25, AGE=83}, {SEX=男, NAME=name32, AGE=83}, {SEX=女, NAME=name127, AGE=83}, {SEX=男, NAME=name226, AGE=83}]
    AGE为6岁的子集:
    [{SEX=女, NAME=name51, AGE=6}, {SEX=男, NAME=name290, AGE=6}]
    AGE为86岁的子集:
    [{SEX=男, NAME=name64, AGE=86}, {SEX=女, NAME=name97, AGE=86}, {SEX=男, NAME=name244, AGE=86}]
    AGE为80岁的子集:
    [{SEX=女, NAME=name1, AGE=80}]
    AGE为10岁的子集:
    [{SEX=男, NAME=name106, AGE=10}, {SEX=男, NAME=name186, AGE=10}]
    AGE为91岁的子集:
    [{SEX=女, NAME=name45, AGE=91}, {SEX=女, NAME=name99, AGE=91}, {SEX=男, NAME=name146, AGE=91}, {SEX=男, NAME=name178, AGE=91}, {SEX=男, NAME=name190, AGE=91}]
    AGE为75岁的子集:
    [{SEX=男, NAME=name86, AGE=75}, {SEX=女, NAME=name177, AGE=75}, {SEX=男, NAME=name224, AGE=75}]
    AGE为78岁的子集:
    [{SEX=女, NAME=name55, AGE=78}, {SEX=男, NAME=name182, AGE=78}, {SEX=女, NAME=name279, AGE=78}]
    AGE为89岁的子集:
    [{SEX=女, NAME=name89, AGE=89}, {SEX=男, NAME=name156, AGE=89}, {SEX=男, NAME=name176, AGE=89}, {SEX=男, NAME=name222, AGE=89}]
    AGE为94岁的子集:
    [{SEX=男, NAME=name16, AGE=94}, {SEX=女, NAME=name49, AGE=94}, {SEX=女, NAME=name135, AGE=94}]
    AGE为97岁的子集:
    [{SEX=男, NAME=name28, AGE=97}, {SEX=男, NAME=name110, AGE=97}]
    AGE为3岁的子集:
    [{SEX=女, NAME=name157, AGE=3}, {SEX=男, NAME=name214, AGE=3}, {SEX=女, NAME=name229, AGE=3}]
    AGE为50岁的子集:
    [{SEX=女, NAME=name167, AGE=50}, {SEX=男, NAME=name220, AGE=50}, {SEX=男, NAME=name228, AGE=50}, {SEX=女, NAME=name235, AGE=50}]
    AGE为53岁的子集:
    [{SEX=女, NAME=name247, AGE=53}, {SEX=男, NAME=name264, AGE=53}]
    AGE为56岁的子集:
    [{SEX=男, NAME=name84, AGE=56}, {SEX=男, NAME=name122, AGE=56}, {SEX=男, NAME=name134, AGE=56}, {SEX=男, NAME=name230, AGE=56}, {SEX=男, NAME=name254, AGE=56}]
    AGE为59岁的子集:
    [{SEX=男, NAME=name136, AGE=59}, {SEX=男, NAME=name154, AGE=59}]
    AGE为42岁的子集:
    [{SEX=男, NAME=name4, AGE=42}, {SEX=女, NAME=name19, AGE=42}, {SEX=男, NAME=name34, AGE=42}, {SEX=男, NAME=name82, AGE=42}, {SEX=女, NAME=name103, AGE=42}]
    AGE为18岁的子集:
    [{SEX=男, NAME=name72, AGE=18}, {SEX=男, NAME=name192, AGE=18}, {SEX=男, NAME=name240, AGE=18}, {SEX=男, NAME=name248, AGE=18}]
    AGE为67岁的子集:
    [{SEX=女, NAME=name243, AGE=67}]
    AGE为45岁的子集:
    [{SEX=女, NAME=name69, AGE=45}, {SEX=男, NAME=name124, AGE=45}, {SEX=女, NAME=name249, AGE=45}, {SEX=男, NAME=name298, AGE=45}]
    AGE为48岁的子集:
    [{SEX=女, NAME=name27, AGE=48}, {SEX=女, NAME=name225, AGE=48}, {SEX=男, NAME=name252, AGE=48}, {SEX=女, NAME=name255, AGE=48}, {SEX=女, NAME=name299, AGE=48}]
    AGE为72岁的子集:
    [{SEX=女, NAME=name13, AGE=72}, {SEX=男, NAME=name22, AGE=72}, {SEX=女, NAME=name43, AGE=72}, {SEX=男, NAME=name98, AGE=72}, {SEX=男, NAME=name132, AGE=72}, {SEX=女, NAME=name211, AGE=72}, {SEX=男, NAME=name292, AGE=72}]
    AGE为29岁的子集:
    [{SEX=女, NAME=name169, AGE=29}, {SEX=女, NAME=name257, AGE=29}]
    AGE为64岁的子集:
    [{SEX=男, NAME=name12, AGE=64}, {SEX=女, NAME=name141, AGE=64}, {SEX=男, NAME=name150, AGE=64}, {SEX=女, NAME=name291, AGE=64}]
    AGE为61岁的子集:
    [{SEX=男, NAME=name40, AGE=61}, {SEX=男, NAME=name60, AGE=61}, {SEX=女, NAME=name215, AGE=61}]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况