zoukankan      html  css  js  c++  java
  • Java的LinkedHashSet、Map接口、可变参数、集合嵌套、

    1、LinkedHashSet:
    (1)LinkedHashSet集合保证元素的存入和取出的顺序;

    package com.oracle.demo01;
    
    import java.util.HashSet;
    import java.util.LinkedHashSet;
    
    public class demo01 {
    
        public static void main(String[] args) {
            //不能存重复元素,但是LinkedHashSet是有序的。
            LinkedHashSet<String> set = new LinkedHashSet<String>(); 
            set.add("c");
            set.add("b");
            set.add("z");
            for(String s:set){
                System.out.println(s);
            }
        }
    }

    效果如下:

    (2)LinkedHashSet其实是HashSet的子类;

    2、Map接口:
    (1)元素是成对存在,每个元素由键与值两部分组成,通过键可以找对所对应的值,键值对;
    (2)Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值;
    (3)遍历:迭代器:不能直接遍历map,遍历set集合
    第一种方法:keyset();第二种方法:entrySet();
    用增强for或者是迭代器,不能用普通for循环,因为没有下标概念;

    增强for(){}

    package com.oracle.demo01;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class demo02 {
    
        public static void main(String[] args) {
            Map<String,String> map = new HashMap<String,String>();
            map.put("1", "a");
            map.put("2","b");
            map.put("2", "z");
            map.put("3", "c");
            //移除
            map.remove("3");
            //取数据
            System.out.println(map.get("1"));
            System.out.println(map.get("2"));
            System.out.println(map.get("3"));
            //1、keySet遍历
            //先获取map中的key所对应的set集合
            Set<String> set = map.keySet();
            //然后遍历set找到每一个key值
            for(String s:set){
                String key = s;
                String value = map.get(key);
                System.out.println(key+".."+value);
            }
            //简写
            for(String s:map.keySet()){
                System.out.println(s+".."+map.get(s));
            }
            //2、entryset()遍历
            Set<Map.Entry<String, String>>  s1 = map.entrySet();
            for(Map.Entry<String, String> e:s1){
                System.out.println(e.getKey()+"..."+e.getValue());
            }
            //简写
            for(Map.Entry<String, String> e:map.entrySet()){
                System.out.println(e.getKey()+"..."+e.getValue());
            }
        }
    
    }

    迭代器

    package com.oracle.demo01;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;
    
    public class demo03 {
    
        public static void main(String[] args) {
            Map<String,String> map = new HashMap<String,String>();  
            map.put("邓超", "孙俪");
            map.put("李晨", "范冰冰");
            map.put("文章", "马伊琍");
            map.put("小沈阳", "沈春阳");
            //迭代器:不能直接遍历map,遍历set集合;
            //1、keyset()
            Set<String> s1 = map.keySet();
            Iterator<String> it = s1.iterator();
            while(it.hasNext()){
                String key = it.next();
                String value = map.get(key);
                System.out.println(key+">>"+value);
            }
            //2、entrySet()
            Set<Map.Entry<String, String>> s2 = map.entrySet();
            Iterator<Map.Entry<String, String>> it2 = s2.iterator();
            while(it2.hasNext()){
                //获取每一个"结婚证对象"
                Map.Entry<String, String> e =it2.next();
                String key = e.getKey();
                String value = e.getValue();
                System.out.println(key+".."+value);
            }
        }
    
    }

    (4)HashMap存储自定义类型键值;保证对象唯一,必须复写对象的hashCode和equals方法;

    建立一个 人  类

    package com.oracle.demo02;
    
    public class person {
            private   String  name;
            private   Integer  age;
            
            public person() {
                super();
            }
            public person(String name, Integer age) {
                super();
                this.name = name;
                this.age = age;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public Integer getAge() {
                return age;
            }
            public void setAge(Integer age) {
                this.age = age;
            }
            
            public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((age == null) ? 0 : age.hashCode());
                result = prime * result + ((name == null) ? 0 : name.hashCode());
                return result;
            }
            
            public boolean equals(Object obj) {
                if (this == obj)
                    return true;
                if (obj == null)
                    return false;
                if (getClass() != obj.getClass())
                    return false;
                person other = (person) obj;
                if (age == null) {
                    if (other.age != null)
                        return false;
                } else if (!age.equals(other.age))
                    return false;
                if (name == null) {
                    if (other.name != null)
                        return false;
                } else if (!name.equals(other.name))
                    return false;
                return true;
            }
            public String toString() {
                return "姓名为" + name + ", 年龄为" + age ;
            }
            
    }

    建立测试类

    package com.oracle.demo02;
    
    import java.util.HashMap;
    import java.util.LinkedHashMap;
    import java.util.LinkedHashSet;
    import java.util.Map;
    
    public class demo01 {
    
        public static void main(String[] args) {
    //通过方法对比看出 键不能重复
           method01();
           method02();
    method03(); }
    public static void method01(){ Map<String, person> map = new HashMap<String, person>(); map.put("java0601", new person("a",21)); map.put("java61", new person("b",21)); map.put("java0806", new person("a",21)); map.put("java86", new person("b",21)); for(String s:map.keySet()){ System.out.println(s+"..."+map.get(s)); } } public static void method02(){ Map<person,String> map = new HashMap<person,String>(); map.put(new person("a",21),"java0601"); map.put(new person("b",21),"java61"); map.put(new person("a",21),"java0806"); map.put(new person("b",21),"java86"); for(person p:map.keySet()){ System.out.println(p+"..."+map.get(p)); } } public static void method03(){ LinkedHashMap<person,String> map = new LinkedHashMap<person,String>(); map.put(new person("a",21),"java0601"); map.put(new person("b",22),"java61"); map.put(new person("a",23),"java0806"); map.put(new person("b",24),"java86"); for(person p:map.keySet()){ System.out.println(p+"..."+map.get(p)); } } }

    效果如下:


    3、可变参数:
    (1)修饰符 返回值类型 方法名(参数类型... 形参名){ };

    package com.oracle.demo02;
    
    public class demo02 {
    
        public static void main(String[] args) {
            System.out.println(add(1));
            System.out.println(add(1,1));
            System.out.println(add(1,1,1));
        }
        //想要做一个求和的方法,但是参数个数不一定,但是类型都是一定的Int
        public static  int add(int...a){
            //int[] b = a;相当于一个数组
            int sum = 0;
            for(int i = 0;i < a.length;i++){
                sum +=a[i];
            }
            return sum;
        }
    }

    效果如下:


    (2)可变参数一定要写在参数列表的末尾位置;

    (3)调用的不确定性,只能传一个可变参数;


    4、集合嵌套:
          用循环嵌套取值;

    举个例子:

    package com.oracle.demo02;
    
    import java.util.HashMap;
    import java.util.Set;
    
    public class demo03 {
    
        public static void main(String[] args) {
            //HashMap<String, HashMap<String,String>>
            method01();
    
        }
        public  static  void method01(){
            HashMap<String, HashMap<String,String>>  map = new HashMap<String, HashMap<String,String>>();
            HashMap<String,String>  m1 = new  HashMap<String,String>();
            m1.put("0601", "温昭");
            m1.put("0806", "马荣");
            HashMap<String,String>  m2 = new  HashMap<String,String>();
            m2.put("0101", "张三");
            m2.put("0202", "李四");
            map.put("oracle01", m1);
            map.put("oracle02", m2);
            //第一层循环:获取学校
            Set<String> s1= map.keySet();
            for(String s2:s1){
                   //学校名称
                   String  schoolname = s2; 
                   //获取每一个班级
                   HashMap<String,String> s3 = map.get(s2);
                   Set<String> s4 = s3.keySet();
                   for(String s5:s4){
                       //班级名称
                       String  classname =   s5;
                       //学生名称:
                       String  studentname =  s3.get(s5);
                       System.out.println(schoolname+".."+classname+".."+studentname);
                   }
            }
        }
    }

    效果如下:

    可以简写为:

    //简写
            for(String s:map.keySet()){
                for(String s1:map.get(s).keySet()){
                    System.out.println("学校为"+s+",班级为"+s1
                            +"姓名为"+map.get(s).get(s1));
                }
            }
  • 相关阅读:
    Python pip离线部署
    Windows API 纳秒级别延迟
    基于Cython和内置distutils库,实现python源码加密(非混淆模式)
    boost.property_tree读取中文乱码问题
    Direct初始化三步曲
    分享一个电子发票信息提取工具(Python)
    关于&0x80
    给QT不规则窗口添加阴影
    waveout系列API实现pcm音频播放
    An application has made an attempt to load the C runtime library incorrectly.Please contact the application's support te
  • 原文地址:https://www.cnblogs.com/scw123/p/9777093.html
Copyright © 2011-2022 走看看