12 | JAVASE高级应用-集合

1 JAVASE高级应用

  • 集合泛型枚举
  • 使用类
  • XML
  • 反射
  • 线程
  • 网络编程

2 知识点的分级

  1. 掌握:不光要知道怎么去用,而且还必须能够灵活的运用于实际生
  2. 理解:知道这个知识点的运用方式,但是不必深究其原理
  3. 了解:了解这个知识点,在实际生产中极少运用,属于是拓宽知识面的内容

3 源码

  1. 初级:3年工作经验之内的通许,一般来说是重点在运用阶段,大致了解一些原理性的概念
  2. 中级:3-5年工作经验的,可以适当阅读一些通用性(SE)的源码
  3. 高级:5年以上,必然要选择方向,然后在该领域当中选择一个方向去深入研究
  4. 建议:人不可能面面俱到,不要想着一口吃个胖子

4 集合

在这里插入图片描述

4.1 List

有序不唯一的集合

  • 所在包:java.util.*
  • ArrayList
  1. 本质是一个数组;
  2. 不适合频繁增减元素,比如一个数组如果有1000W个元素,我如果需要增加一个元素,那么就意味着你需要先创建1000W零1个元素先创建出来,然后复制,这个才算是拓展成功;
  3. 擅长随机访问;
  • LinkedList
  1. 是一个双向链表 ;
  2. 适合于增减元素操作 ;
  3. 不擅长随机访问;
  4. 使用LinkedList,因为该实现类,实现了很多list接口中没有的方法,所以通常使用该类本身来声明。

4.2 Set

无序 ,唯一

  • 唯一是指equals相同
  • 遍历 set
  1. 获取迭代器
  2. 增强for循环遍历
  • HashSet使用的是HashMap的key

4.3 Map

键值对

  • key:具有唯一性,且无序
  1. 如果再次放入某个key相同的值,那么value覆盖原来的值
  2. key可以是null,但是null值也是一个唯一存在的key
  • value:可以重复,可以是任意值
  • 获取所有key和所有map

4.4 Hash、set和map

  • hashMap
  1. Entry:是一个单向链表
  2. TreeEntry:包含了hash的双向链
  3. 红黑树
  • Hash
  1. hash可以重写
  2. native默认情况下,hash是本地调用提供的,比如调用本地C
  3. 集合中的hashCode是被重写过的,默认情况下是地址,重写过的,都不是了

4.5 泛型

目的:统一集合当中的元素
对于基本数据类型:泛型只能使用包装类来定义基本数据类型

4.5.1 实例1

import java.util.ArrayList;  
import java.util.List;  

public class Test1 {  
	public static  void  main(String[] args) {  
      List l1=new ArrayList();  
      l1.add("a");  
      l1.add("b");  
      l1.add("c");  
      List l2=new ArrayList();  
      l2.add("a");  
      l2.add("b");  
      l2.add("c");  
        
      // 1、判断是否包含某个元素:返回的前提是equals是否相等  
      System.out.println(l1.contains("a"));  
      // 内容包含  
      System.out.println(l1.containsAll(l2)); //只要元素包含  
      // 添加  
      l1.addAll(l2);  
      l1.addAll(l2);  
      l1.addAll(l2);  
      System.out.println(l1.toArray());  
      // 3、获取元素的游标,从左到右,第一次遇到的  
     // or -1 if  there is no such index  
      System.out.println(l1.indexOf("a"));   
     // 从右到左,第一次遇到那个  
      System.out.println(l1.lastIndexOf("c"));   
     // 截取:从fromIndex开始,到toIndex游标之前一位  
      List l3 = l1.subList(0,2);   
      System.out.println(l3);   
    }  
}

4.5.2 实例2

public class Test2 {  
    public static  void  main(String[] args) {  
         LinkedList list =new LinkedList();  
         list.addFirst("");  
         list.addLast("");  
         list.getFirst();  
         list.getLast();  
         list.removeFirst();  
         list.removeLast();  
    }  
}  

4.5.3 实例3

public class Test3 {  
    public static  void  main(String[] args) {  
       //无序且唯一  
       //基本数据类型,引用数据类型  
       Set s=new HashSet();  
      s.add("a");  
       s.add("b");  
       s.add("c");  
      System.out.println(s.size());  
       System.out.println();  
         
       // 获取迭代器  
       Iterator is =s.iterator();  
      while(is.hasNext())//判断是否有下一个,如果有返回true,没有则返回false  
       {  
           Object obj= is.next();  
           System.out.println(obj);  
       }    
       // 增强for循环  
       for(Object obj : s){  
           System.out.println(obj);  
       }  
    }  
}  

4.5.4 实例4

public class Test4 {  
    public static  void  main(String[] args) {  
      //自定义游标  
      Map m=new HashMap();  
      //添加元素  key具有唯一性,且无序  
      m.put("K1","V1");  
      m.put("K1", "value1");  
      // 可以为null,null值也是唯一存在的key  
      m.put(null,null);  
      System.out.println(m.get("K1"));  
      m.put(null,"nullStr");  
      System.out.println(m.get(null));  
      //2、获取所有的key  
      Set keys=m.keySet();  
      System.out.println(Arrays.toString(keys.toArray()));  
      // 3、获取所有的value  
      Collection cons  = m.values();  
      System.out.println(Arrays.toString(cons.toArray()));  
    }  
}  

4.5.5 实例5

public class Test5 {  
    public static  void  main(String[] args) {  
        System.out.println("a".hashCode());  
         A a= new A();  
         System.out.println(a.hashCode());  
         System.out.println(Objects.hash(1));//基本数据类型的hash  
         //相同对象的hash,必然一样  
         A a1= new A();  
         A a2 = a1;  
         System.out.println(a1.hashCode());  
         System.out.println(a2.hashCode());  
         //不同对象的hash,必然不一样  
         System.out.println(Objects.hash(new A()));  
         System.out.println(Objects.hash(new A()));  
           
         //set只要元素一致,hash就一致  
         System.out.println(a1.toString());          
         Set s1= new HashSet();  
         s1.add("a");  
         s1.add("b");  
         s1.add("c");  
         s1.add("d");  
         Set s2= new HashSet();  
         s2.add("a");  
         s2.add("b");  
         s2.add("c");  
         s2.add("d");     
         System.out.println(s1.hashCode());  
         System.out.println(s2.hashCode());  
         //map的keyhe value相同,那么他们的hash一样  
         Map m1=new HashMap();  
         m1.put("K1","value1");  
         m1.put("K2","value1");  
         m1.put("K3","value1");  
         Map m2=new HashMap();  
         m2.put("K1","value1");  
         m2.put("K2","value1");  
         m2.put("K3","value1");    
           
        LinkedList l1= new LinkedList();  
        l1.add("a");  
        l1.add("b");  
        l1.add("c");  
        LinkedList l2= new LinkedList();  
        l2.add("a");  
        l2.add("b");  
        l2.add("c");   
        System.out.println(l1.hashCode());  
        System.out.println(l2.hashCode());  
        //Arraylist  
        List la1=new ArrayList();  
        la1.add("a");  
        la1.add("b");  
        la1.add("c");       
        List la2=new ArrayList();  
        la2.add("a");  
        la2.add("b");  
        la2.add("c");   
        System.out.println(la1.hashCode());  
        System.out.println(la2.hashCode());            
    }  
}  
class A {  
}

4.5.6 实例6

public class Test6 {  
    public static  void  main(String[] args) {  
      List<String> l=new ArrayList();  
      l.add("ybb1");  
      l.add("ybb2");  
      l.add("ybb3");  
      l.add("ybb4");      
      for(String str : l) {  
           System.out.println();  
      }  
      Set<String>  s=new HashSet<String>();  
      Map<String,Object>  m=new  HashMap<String,Object>();      
      Set<Double>  s1=new HashSet<Double>();      
      }  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 全国v3.0版javase加强第一阶段-第2套卷主要是指在javase基础上进行加强学习和应用。在这套卷中,学习者需要掌握更高级Java编程知识和技巧。 首先,学习者需要对Java语言有扎实的掌握。他们应该熟练掌握Java的基本语法、数据类型、流程控制、面向对象等基础知识。在此基础上,他们还需要深入了解Java高级特性,如多态、继承、接口等,并能够灵活运用这些知识解决实际问题。 此外,学习者还需要学习和掌握Java的核心类库。他们应该了解Java集合框架、IO流、多线程等核心类库的使用方法和原理,并能够利用这些类库进行开发和优化。 在加强第一阶段的学习中,学习者还应该注重实践。他们应该通过编写各种类型的Java程序来加深对知识的理解和掌握。这些程序可以是简单的练习题,也可以是实际的应用开发项目。 通过学习全国v3.0版javase加强第一阶段-第2套卷,学习者能够进一步提升自己的Java编程能力。他们将能够更加熟练地运用Java语言和核心类库进行开发,并能够解决更复杂、更实际的编程问题。这将为他们今后的学习和工作打下坚实的基础。 ### 回答2: 全国V3.0) JavaSE加强第一阶段-第2套卷是一套用于加强JavaSE知识的教材。JavaSEJava平台标准版的缩写,是Java语言的基础,涵盖了Java语言的基本语法、面向对象编程、异常处理、多线程、集合框架等内容。 这套教材的目的是在第一阶段的基础上,进一步加强学生对JavaSE的理解和应用能力。它通过一系列的教学案例,让学生掌握更深入的编程技巧和方法。对于想要进一步提升Java编程能力的学生来说,这套教材是一个很好的选择。 教材中的内容包括Java中的异常处理、文件操作、网络编程、GUI界面设计等多个方面。 这些内容都是Java编程中非常重要的知识点,掌握了这些知识,学生可以更加灵活地运用Java语言来解决实际问题。 教材的设计符合教育教学规律,注重理论与实践相结合,通过实际的编程案例,帮助学生巩固理论知识,并且锻炼解决实际问题的能力。 总之,全国V3.0) JavaSE加强第一阶段-第2套卷是一套旨在加强学生对JavaSE知识理解和应用能力的教材。它涵盖了JavaSE的核心内容,通过实例教学帮助学生锻炼编程能力。对于想要进一步提升Java编程水平的学生来说,这套教材是一个非常实用和有效的学习工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值