JAVA Class17

Posted Observer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA Class17相关的知识,希望对你有一定的参考价值。

学习内容:

Map接口:

特点:数据以键值对的形式储存,键不可以重复,值可以重复。

1.常用方法:

(1)put,返回String

(2)remove,返回String

(3)replace,返回String

public class Test {

    public static void main(String[] args) {
        Map<Integer,String> m= new HashMap<Integer,String>();
        String m1=m.put(1, "世界");//如果集合之前未存储该元素,返回null
        String m2=m.put(2, "隐士");
        String m3=m.put(3, "皇帝");
        String m4=m.put(3, "女教皇");//值被取代,返回这个键之前对应的值,即皇帝
        System.out.println(m4);
        System.out.println(m);
        System.out.println(m.get(3));
        String s = m.get(1);
        System.out.println(s);
        String r = m.remove(2);//返回被删除的值
        System.out.println(r);
        System.out.println(m);
        String re = m.replace(1, "诡诈师");//返回被修改之前的值
        System.out.println(re);
        System.out.println(m);
   }
}

2.遍历方式:

因为键值对的储存方式,无法直接遍历,间接的遍历方法:

(1)keySet方法返回包含所有键的Set,利用键找到值

public class Test {

    public static void main(String[] args) {
        Map<Integer,String> m= new HashMap<Integer,String>();
        String m1=m.put(1, "世界");//如果集合之前未存储该元素,返回null
        String m2=m.put(2, "隐士");
        String m3=m.put(3, "皇帝");
        for(Integer i:m.keySet()) {//返回一个set 包含所有键
            int key = i;
            System.out.println(i+"="+m.get(key));
        }
        Set<Integer> set = m.keySet();
        for(Iterator<Integer> it=set.iterator();it.hasNext();) {
            int i = it.next();
            String value = m.get(i);
            System.out.println(i+"="+value);
        }
    }
}

(2)entrySet返回一个包含Entry类的Set,Entry类是Map接口的内部接口,把键值对储存为Entry对象,可以通过getKey和getValue的方法来分别获取

键值。

public class Test {

    public static void main(String[] args) {
        Map<Integer,String> m= new HashMap<Integer,String>();
        String m1=m.put(1, "世界");//如果集合之前未存储该元素,返回null
        String m2=m.put(2, "隐士");
        String m3=m.put(3, "皇帝");
        Set<Entry<Integer, String>> e = m.entrySet();
        for(Iterator<Entry<Integer, String>> it =e.iterator();it.hasNext();) {
            Entry<Integer, String> entry = it.next();
            int key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"="+value);
        }
        for(Entry<Integer, String> entry:e ) {
            System.out.println(entry.getKey()+"="+entry.getValue());
        }
   }
}

3.实现类:

(1)HashMap(2)LinkedHashMap(存取有序)

public class Test {

    public static void main(String[] args) {
        LinkedHashMap<Integer,String> lhm = new LinkedHashMap<Integer,String>();
        lhm.put(1, "英伟达");
        lhm.put(2, "超微半导体");
        lhm.put(3, "英特尔");
        lhm.put(4, "RXVega");
        System.out.println(lhm);
        HashMap<Integer,String> hm = new HashMap<Integer,String>();
        hm.put(1, "GTXTITAN V");
        hm.put(2, "ThreadRipper");
        hm.put(3, "I9 7980XE");
        hm.put(4, "Vega56");
        hm.put(5, "X399");
        System.out.println(hm);
    }
}

 4.Map嵌套:

把一个Map的实现类当做另一个Map的值:

public Test{
  public static void main(String[] args){
    HashMap<Integer,String> student = new HashMap<Integer,String>();
        student.put(1,"POTER");
        student.put(2,"JIM");
        student.put(3,"WINSTON");
        HashMap<String,HashMap<Integer,String>> classroom = new HashMap<String,HashMap<Integer,String>>();
        classroom.put("JAVA01",student);
        Set<String> sc = classroom.keySet();
        Set<Integer> ss = student.keySet();
        for(String s:sc) {
            System.out.println(s+"班有"+"学生:");
            for(Integer i:ss) {
                System.out.println("学号:"+i+"姓名:"+classroom.get(s).get(i));
            }
        }
        Set<Entry<String,HashMap<Integer,String>>> ec= classroom.entrySet();
        Set<Entry<Integer, String>> es = student.entrySet();
        for(Entry<String,HashMap<Integer,String>>entry:ec) {
            System.out.println(entry.getKey()+"班有"+"学生:");
            for(Entry<Integer, String>entry2:es) {
                System.out.println("学号:"+entry2.getKey()+"姓名:"+entry2.getValue());
            }
        }
  }  
}

5.Collections工具类:

常用方法:

 reverse 反转
 shuffle  混淆
 sort  降序排序
 swap  交换位置
public class TestCollections {

    public static void main(String[] args) {
        ArrayList<Integer> a = new ArrayList<Integer>();
        a.add(1);
        a.add(2);
        a.add(3);
        Collections.reverse(a);//反转
        Collections.shuffle(a);//混淆
        Collections.sort(a);//降序排序
        Collections.swap(a,0,2);//交换位置
    }
}    

 

以上是关于JAVA Class17的主要内容,如果未能解决你的问题,请参考以下文章

14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段

[20-05-15][Thinking in Java 17]Java Inner Class 1 - Inner Class 2

[20-05-15][Thinking in Java 17]Java Inner Class 1 - Inner Class 2

java.lang.IllegalStateException:键 f0 的片段不再存在:索引 1

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

导航抽屉活动:在按钮单击时从片段移动到片段