map集合和set集合

一、Vector
     1 、java中提供的最早的集合,一个动态数组,与ArrayList相似,但是两者不同:
          (1)Vector是同步访问的
          (2)Vector包含了很多传统的方法,这些方法不属于集合框架
          (3)Vextor主要用于实现不知道数组的大小,或者重视需要一个可以改变大小的数组的情况
      
     2 、枚举   Enumeration    迭代器的前身    与Iterator功能类似

二、Set 接口   (是Collection的子接口  Collection是容器的意思)
     1、Set接口不能存储重复的元素,不按照元素存储顺序排列,Set接口有三个实现类,分别是                HashSet、LinkedHashSet、TreeSet,主要是HashSet
     2、
        创建对象:Set<String> s=new HashSet<String>();
        主要方法:
              s.add();添加元素
        用增强for循环和迭代器对集合元素输出:
                 public static void main(String[] args){
                       Set<String> s=new HashSet<String>();//创建对象
                        s.add("aa");
                        s.add("bb");
                        s.add("cc");
                        //当出现重复的元素时,后边的覆盖前边的
                        s.add("aa");
                        //增强for循环          for(集合元素类型 给元素起的名:集合名称){}
                       for(String s1:s){
                         System.out.println(s1);   
                         }
                       //迭代器        对象s调用Iterator()方法创建了一个迭代器
                       Iterator(String) it=s.iterator();//迭代器(要迭代集合的数据类型)  迭代器对象=集合对象.iterator();
                       while(it.hasNext()){             //it.hasNext()判断集合中是否还有下一个元素
                           System.out.println(it.next());     //next()将元素提取出来
                           }
                   }
三、Map接口  (不是Collection子类)
       1、定义:Collection的子类存储对象都是向集合中一个一个放,像Set<String> s=new HashSet<String>();
                而Map接口是成对存储,包括key值和Value值,key和Value一一对应,可以通过键值获取值HashMap<String(key值),String(Value值)> map=new HashMap<String,String>();
       
       2、Map集合中不能包含重复键,但可以包含重复的值
      
       3、子类有HashMap和LinkedHashMap等
 
       4、主要方法:put(添加)   get(提取)  remove(key)(移除)
         public class MapDemo1 {
                       //map中put是添加值
         public static void main(String[] args){
              Map<Integer,String> map=new HashMap<Integer, String>();
              map.put(1,"aa");
              map.put(2,"bb");
              map.put(3,"cc");
                      //键值不能重复,如果重复就覆盖之前的值
              map.put(3,"nn");
              map.put(100,"100");
              System.out.println(map.get(3));
              System.out.println(map);
              System.out.println(map.get(66));
              System.out.println(map.remove(1));
              System.out.println(map);

             }
          }
         5、LinkedHashMap的打印出来的元素顺序和键入的顺序无关

            public class LinkedHashMapDemo {
            public static void main(String[] args){
                       //LinkedHadhMap的打印顺序是根据数据输入的先后顺序
                 LinkedHashMap<String,String> m=new LinkedHashMap<String,String>();
                 m.put("1","a");
                 m.put("2","b");
                 m.put("3","c");
                 m.put("5","d");
                 m.put("4","e");
                 System.out.println(m);
              }
           }


         6、Map集合的遍历方式   keySet()和entrySet()
             
            Map集合没有迭代器的接口,没有办法进行遍历,所以先映射进Set集合再进行迭代
            
            keySet()是只把键映射到Set集合,entrySet()是把键和值都映射到Set集合

            keySet()方法:
                     public class MapDemo2 {
                     public static void main(String[] args){
                         Map<String,String> map=new HashMap<String, String>();
                         map.put("北凉","徐凤年");
                         map.put("北凉1","温华");
                         map.put("北凉2","老黄");
                         Set<String> set=map.keySet();
                         System.out.println(set);
                         Iterator<String> it=set.iterator();
                         while (it.hasNext()){
                         String value=it.next();
                         System.out.println(map.get(value));
                     }
                         System.out.println("=========================");
                         for (String se:set) {
                         System.out.println(map.get(se));
                       }
                    }
                  }

            Map嵌套中使用entrySet()方法(也可使用keySet()方法):
                     public class MaoMapDemo {
                     public static void main(String[] args){
                           //定义Java班集合
                           HashMap<String,String> javas=new HashMap<String, String>();
                           //定义Hdoop班集合
                           HashMap<String,String> Hdoop=new HashMap<String,String>();
                           //向班级里添加学生
                           javas.put("1","徐凤年");
                           javas.put("2","小泥人");

                           Hdoop.put("1","徐龙象");
                           Hdoop.put("2","徐北枳");

                          //System.out.println(javas);
                          //System.out.println(Hdoop);

                          HashMap<String,HashMap<String,String>> aaa=new                           HashMap<String,HashMap<String,String>>();
                          aaa.put("java班",javas);
                          aaa.put("Hdoop班",Hdoop);
                         //System.out.println(aaa);
                         //entrySet1(aaa);
                         foreachdemo(aaa);
                        }
//迭代器
             //    public static void entrySet1(HashMap<String,HashMap<String,String>> aaa){
//                                       //entrySet()将HashMap中值映射到set集合中,键值和值全都映射过去
//                        Set<Entry<String,HashMap<String,String>>> classNameSet=aaa.entrySet();
//                             System.out.println(classNameSet);
//                //迭代选择
//                        Iterator<Entry<String,HashMap<String,String>>> it=classNameSet.iterator();
//                        while (it.hasNext()){
//                           //System.out.println(it.next());
//                     //next的类型为Entry<String,HashMap<String,String>>,next的值Hdoop班={1=徐龙象, 2=徐北枳}和java班={1=徐凤年, 2=小泥人}
//                        Entry<String,HashMap<String,String>> next=it.next();
//                             System.out.println(next);
//                    //得到Hdoop这样的key值(班名)
//                        String classNameKey=next.getKey();
//                             System.out.println(classNameKey);
//                    //得到每个班的人名集合
//                        HashMap<String,String>  classMap=next.getValue();
//                             System.out.println(classMap);
//                    //人名集合是Map类型,再次映射到set集合
//                        Set<Entry<String,String>> StudentSet=classMap.entrySet();
//                    //System.out.println(StudentSet+"==============");
//                    //对人名集合进行迭代
//                        Iterator<Entry<String,String>> classit=StudentSet.iterator();
//                        while(classit.hasNext()){
//                             Entry<String,String> studentEntry=classit.next();
//                             String numKey=studentEntry.getKey();
//                             String numName=studentEntry.getValue();
//                             System.out.println(numKey+"     "+numName);
//                       }
//                     }
//
//                   }




//增强for循环
                public static void foreachdemo(HashMap<String,HashMap<String,String>> aaa){
                        Set<Entry<String,HashMap<String,String>>> classIt=aaa.entrySet();
                              System.out.println(classIt);
                        for (Entry<String,HashMap<String,String>> className:classIt) {
                              System.out.println(className);
                        Entry<String,HashMap<String,String>> classNameAGe=className;
                              System.out.println(classNameAGe);
                        String classKey=classNameAGe.getKey();
                        HashMap<String,String> classValue=classNameAGe.getValue();
                              System.out.println(classValue);
                        Set<Entry<String,String>> StudentSet=classValue.entrySet();
                        for (Entry<String,String> sksdfk: StudentSet) {
                              System.out.println(sksdfk);
                        //Entry<String,String> gggg=sksdfk;
                            String studentKey=sksdfk.getKey();
                            String studentName=sksdfk.getValue();
                            System.out.println(studentKey+ "     " +studentName);
                          }
                      }
                     }
                  }

四 、集合的操作工具      shuffle   生成随机的序列
                  public static void main(String[] args){
                               fun1();
                     }
                  public static void fun1(){
                        List<Integer> list=new ArrayList<Integer>();
                        list.add(1000000);
                        list.add(1);
                        list.add(2);
                        list.add(24);
                        list.add(198);
                        list.add(138478);
                        list.add(1342);
                          System.out.println(list);
                        //工具类方法shuffle() 对集合进行随机排列
                       Collections.shuffle(list);
                       System.out.println(list);
                      }
                  }








posted @ 2019-03-29 19:42  橙汁one  阅读(298)  评论(0编辑  收藏  举报