zoukankan      html  css  js  c++  java
  • Java 常用类与集合框架 泛型

    一、常用类

    常用类中将主要学习:

      java.lang包中的类:

        Object类

        Math类

        String类 和 StringBuffer类 (字符串)

        8种基本数据类型所对应的包装类

      java.util包中的类

        Date类

    1、Object 类

      Object 类时java语言程序中所有类的父类,即java程序中其他所有类都是继承自Object类

      Object类中包含了Java语言类中的所有公共属性。

        toString( )方法

        equals( )方法

        getClass( )方法

        clone( )方法

        finalize( )方法

     2、Math

      java.lang.Math类提供了常用的数字运算方法和两个静态常量E(自然对数的底数)和PI(圆周率)

      (1)、Math.abs  求绝对值  Math.abs(-3.5);  //返回3.5

      (2)、Math.max  求最大值  Math.max(2.5,90.5);  //返回90.5

      (3)、第一种方法:int random = ( int )( Math.random()*10);  //生成一个0-9之间的随机数

         第二种方法:Random rand = new Random();  int num = rand.nextint(10);  //生成一个0-9之间的随机数

    3、String 类

    使用String 对象存储字符串

      String str = " JAVA";  

      String str = new String();

      String str = new String("Java");

    String类常用操作:

      计算字符串的长度 :str.length

      比较字符串 : str.equals( " **")   或   “ == ”

            equals() : 检查组成字符串内容的字符是否完全一致

            “ == ” : 判断两符串在内存中的首地址,即判断是否是用一个字符串对象

      字符串连接:方法1:使用 “ + ”  

          String str1 = "Java";
           String str2 = "Hello";
           String str3 = str1+str2;

           方法2:使用String类中的concat()方法

            String str1 = new String("欢迎学习");
            String str2 = new String("JAVA");
            String result = str1.concat(str2);

      字符串常用提取:

        indexOf()  //搜索第一个出现的元素的下标

        lastindexOf()  //搜索最后一个出现的元素的下标

        substring(int index)  //提取从位置索引开始的字符串的部分

        sunstring(int beginindex,int enindex)  //提取beginindex 和 endindex 之间的字符串部分

        trim()  //返回一个前后不含任何空格的调用字符串的副本

      字符串拆分:

        String类提供了split()方法,将一个字符串分割为子字符串,结果作为字符串数组返回

            String str = "a,b,c,d,e,g";
            String[] split = str.split(",");    //将字符串str通过,拆分

    4、StringBuffer类

      StringBuffer:String增强版

      StringBuffer声明

          StringBuffer sb1 = new StringBuffer();

      StringBuffer的使用

          sb1.toString();  //转化为String类型

          sb1.append(" *** ");  //追加字符串

      StringBuffer可以将任何类型的值追加到字符串之后

     

     5、操作日期时间

      Date类:表示日期和时间

        提供操作日期和室间各组成部分的方法

      SimpleDateFormat类

        用于定制日期时间的格式

        public static void main(String[] args) {
            
            Date date = new Date();        //获取当前时间
            System.out.println(date);
                
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        //定义一个时间格式
            
            String date1 = format.format(date);        // 把获取的Date时间 转化成  对应格式的 String类型
            
            System.out.println(date1);
                    
        }

     

     输出的结果为:

            Tue Apr 02 19:53:25 CST 2019
            2019-04-02 19:53:25

     6、Calendar类:

      抽象类

      用于设置和获取日期/时间数据的特定部分

      Calendar类提供一些方法和静态字段来操作日历

    Calendar calendar = Calendar.getInstance();        //    日历方法
            
            //获取  年分
            System.out.println(calendar.get(calendar.YEAR));
            
            //获取  月份  因为获取的是 0 -11的,所以获取当前月时要+1
            System.out.println(calendar.get(calendar.MONTH)+1);
            
            //获取 天数
            System.out.println(calendar.get(calendar.DAY_OF_MONTH));
            
            //获取  星期    因为星期是从周日开始的,所以获取当期星期要-1
            System.out.println(calendar.get(calendar.DAY_OF_WEEK)-1);
            
            //获取  小时
            System.out.println(calendar.get(calendar.HOUR));
            
            //获取  分钟
            System.out.println(calendar.get(calendar.MINUTE));
            
            //获取  秒
            System.out.println(calendar.get(calendar.SECOND));

    输出结果: 

        2019
        4
        2
        2
        8
        1
        48

     

    7、枚举类

       枚举指由一组固定的常量组成的类型

       枚举类的好处:  类型安全,易于输入,代码清晰

    /**
     * 创建一个性别的枚举类
     * @author Administrator
     *
     */
    public enum Sex {
        男,女
    }

     

    二、Java集合框架

      Java集合框架位于java.util包中,提供了一套性能优良、使用方便的接口和类

     1、List接口

       List接口存储一组不唯一,有序(插入顺序)的对象

       ArrayList类实现了长度可变的数组,在内存中分配连续的空间。遍历元素的随机访问元素的效率比较高

       LinkedList类采用链表存储方式。插入、删除元素时效率比较高

      ArrayList常用方法

        定义一个ArrayList集合:List list = new ArrayList();

            //定义一个ArrayList集合
            List list = new ArrayList();
            
            list.add(1);    //将元素添加到集合中
            
            list.add(1, 2);     //将元素 2 插入到集合的 下标为 1 的位置
            
            list.get(1);    //返回集合中索引为 1 的元素
            
            list.indexOf(2);    //返回元素 2 在集合中出现的索引
            
            list.set(1, 3);        //将下标为 1 的元素替换为 3
            
            list.remove(1);        //删除并返回 下标为 1 的元素
            
            list.isEmpty();     // 判断 list集合是否为空    返回的是boolean类型
            
            list.contains(3);    // 判断list集合中是否包含 3  返回的是boolean类型

      LinkedList常用方法:

        定义一个LinkedList : LinkedList list = new LinkedList();

    //定义一个 LinkedList集合
            LinkedList list = new LinkedList();
            
            list.addFirst(1);         //将给定元素插入当前集合头部
            
            list.addLast(5);         //将给定元素插入当前集合尾部
            
            list.getFirst();        //获取当前集合的第一个元素
            
            list.getLast();            //获取当前集合的最后一个元素
            
            list.removeFirst();        //移除并返回当前集合的第一个元素
            
            list.removeLast();        //移除并返回当前集合的最后一个元素

    2、Set接口

      set接口存储一组唯一,无序的对象

      HashSet 是Set接口常用的实现类

    •    HashSet允许集合元素值为null
    •   操作数据的方法与List类似,Set接口不存在get()方法

      定义一个Set集合 : Set set = new HashSet();

     3、HashMap

      HashMap 是Map接口最常见的实现类

      存储一组成对的 键 - 值对象,提供key(键)到 value(值)的映射,通过key来索引

    •   key不允许重复
    •   value允许重复
    •   添加的对象将转换为Object类型

       定义一个HashMap 集合 : HashMap map = new HashMap();

        
            //定义一个HashMap 集合
            Map map = new HashMap();
            
            map.put(1, "编号");        //将互相关联的一个关键字(key)与一个值(value)放入该集合
            
            map.remove(1);            //将 key值为 1的元素移除
            
            map.get(1);                //获取与关键字key相关的值。如果该键不关联任何非null值,则返回null
            
            map.containsKey(1);     //判断集合中是否存在关键字key
            
            map.containsValue("11");     //判断集合中是否存在值value
            
            map.isEmpty();        //判断集合中是否存在元素
            
            map.clear();         //清楚集合中的所有元素
            
            map.size();            //返回集合中元素的数量
            
             Set set1 =map.keySet();    //获取所有键key的集合
             
             Collection set2 =map.values();        //获取所有值value的集合

    遍历HashMap:

      keySet()方法获取键的集合

      values()方法获取值得集合

    //定义一个HashMap 集合
            Map map = new HashMap();
            
            //循环给map集合赋值
            for(int i = 0;i<=5;i++){
                map.put(i, i*5);
            }
            
            //遍历map集合
            Set sets = map.keySet();
            
            //foreach循环
            for(Object o : sets){
                System.out.println(o +"  "+ map.get(o));
            }

     打印结果为:

         0 0
        1 5
        2 10
        3 15
        4 20
        5 25

     4、Collections类

      Collections和Collection不同,前者是集合的操作类,后者是集合接口
      Collections提供的静态方法
        sort():排序
        binarySearch():查找
        fill():替换

     

    三、泛型

      将对象类型作为参数,制定到其他类或者方法上,从而保证类型转换安全性和稳定性

        本质是参数化类型

     泛型包括:

        1、泛型集合 :限定集合中的数据类型,使得集合在取值时能被正确使用

        2、泛型方法 :在方法中定义泛型,泛型作用在该方法上,出了方法谁也不认识。

               此处泛型是一个泛指,是根据实现使用时变化的数据类型

        3、泛型类  :在类中定义泛型,在类的方法或常量中就可以使用该泛型作为数据类型

        4、泛型接口 :在接口中定义泛型,在接口的方法或常量中就可以使用该泛型作为数据类型。

                此处泛型是一个泛指,是根据实现使用时变化的数据类型

        5、多重泛型 :在定义泛型时,可以使用N个泛型变量

     泛型集合:

      泛型集合可以约束集合内的元素类型

      典型泛型集合 ArrayList<E>,HashMap<K,V>

      

    ArrayList<E>

    public static void main(String[] args) {
            
            // ArrayList<E>  定义一个只能存放字符串类型的List集合
            List<String> list = new ArrayList<String>();
            list.add("123");        //只能向该集合中添加字符串类型的数据
            list.add("xxx");
            
            //ArrayList   定义一个没有声明泛型的List集合
            List list1 = new ArrayList(); 
            list1.add("123");    //可以装字符串
            list1.add(123);        // 数字
            list1.add(true);    //    boolean类型
        }

    HashMap<k,V>

        // HashMap<K,V>   定义一个键只能存放 字符串类型, 值只能存放 integer类型的Map集合
            Map<String,Integer> map = new HashMap<String,Integer>();
            map.put("123", 111);    //key 只能是字符串类型,value只能是int类型
            map.put("adasd", 358);
            
            // HashMap   定义一个没有声明泛型的Map集合
            Map map1 = new HashMap();
            map1.put(123, 123);        //没有使用泛型来限制key value 的数据类型,所有key value 可以是任何Object对象
            map1.put(true, "123");

      

    泛型接口:

      泛型接口就是一个或多个类型参数的接口

    语法:

      public interface 接口名<类型形参>{

        方法名(类型形参 类型形参实例);

      }

    示例:

    /**
     * 创建一个泛型接口
     *
     *
     * @param <T>
     */
    public interface interface1<T>{
        
        //定义一个方法  其中返回值是任意类型,参数类型也可以是任意类型的参数
        public T fun(T t);
    }
    /**
     * 
     * 创建一个类实现泛型接口
     *
     * @param <T>
     */
    public class Demo2<T> implements interface1<T> {
    
        public static void main(String[] args) {
            
            Demo2 demo2 = new Demo2();
            String str =  (String) demo2.fun("123");
            System.out.println(str);
        
        }
    
        @Override
        public T fun(T t) {
            return t;
        }
    
    }

    控制台输出的结果为:123

    泛型类:

        泛型类就是具有一个或者多个类型参数的类

    语法:

      public class 类名<类型形参>{

        方法名(类型形参 类型形参实例){

          方法执行体

    ·    }

      }

    示例:

    /**
     * 泛型类
     * 
     *
     * @param <T>
     */
    public class Demo3<T> {
        
        /**
         *     有参有返回值的泛型方法 
         *     输入什么,返回什么
         * @param t
         * @return
         */
        public T fun(T t){
            return t;
        }
            
    }

      

    泛型方法

        泛型方法就是带有类型参数的方法

    语法:

      修饰符<类型形参> 返回值 方法名(任意对象的形参,参数){

        方法体

      }

     

    示例:

        /**
         *     有参有返回值的泛型方法 
         *     输入什么,返回什么
         * @param t
         * @return
         */
        public T fun(T t){
            return t;
        }

    泛型继承

        面向对象的特性同样适用于泛型类,所以泛型类也可以被继承

        继承了泛型类的子类,必须也是泛型类

     语法:

      clas 子类<T> extends 父类<T>{

      }

  • 相关阅读:
    html2pdf后逐页固定位置盖公章
    c#Stream学习笔记
    Flume -- 开源分布式日志收集系统
    Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具
    Hive -- 基于Hadoop的数据仓库分析工具
    HBase -- 基于HDFS的开源分布式NoSQL数据库
    ZooKeeper -- 分布式开源协调服务
    Hadoop学习(4)-- MapReduce
    Hadoop学习(3)-- 安装1.x版本
    Hadoop学习(2)-- HDFS
  • 原文地址:https://www.cnblogs.com/sloth-007/p/10644987.html
Copyright © 2011-2022 走看看