zoukankan      html  css  js  c++  java
  • SE -- 集合

     

    String类

     

    【1】String类

     

    • 字符串是一个特殊的对象
    • 字符串一旦初始化就不可以被改变
    • String str = "abc" ;  String str1 = new String("abc");
    • 如果是String str = "abc";编译器首先会在常量池中寻找有没有"abc"这个字符串,如果有则直接从常量池中取,不会new,如果常量池中没有,则会new一个,并将"abc"存放到常量池中。
       
      而String str = new String( "abc");则编译器直接new一个字符串,不会到常量池中查询。
       
      所以:
      String str1 = "abc";
      String str2 = "abc";//str1是"abc",常量池中已经有了"abc",所以str2直接从常量池中取
      String str3 = new String("abc");
      String str4 = new String("abc");
       
      System.out.println(str1 == str2);//true
      System.out.println(str2 == str3);//false
      System.out.println(str3 == str4);//false
    • String类部分方法

       

    • StingBuffer
      • 字符串的组成原理就是通过该类实现的
      • StringBuffer可以对字符串内容进行增删
      • StringBuffer 是一个容器
      • 很多方法和String相同
      • StringBuffer是可变长度
    • 特有方法

       

    • 基本数据类型对象包装类
      • 将基本数据类型封装成对象的好处:可以在对象中定义更多的功能方法操作该数据
      • 常见操作:基本数据类型与字符串之间的转换(?补充)
      • 基本数据类型对象包装类特性:
        • 定义方式(自动装箱 自动拆箱)
        • Integer x= null ; 

     

    集合

    【1】、集合类:
    1)集合类?数据和集合类的不同?
    • 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常见的一种方法。
    • 集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
    • 不同:数组虽然也可以存储对象,但是长度是固定的,集合的长度是可变得,数组中可以存储基本数据类型,集合只能存储对象
    【2】集合框架(集合体系)
    每一个容器对数据的存储方式都有不同,这个存储方式称为数据结构
     

     

    1)collection的两个子接口
    • List(列表) 可存放重复元素,元素存取是有序的
      • list接口中常用类
      • vector:线程安全,但速度慢,已被ArrayList替代
      • arraylist:线程不安全,查询速度快
    • linkedlist:链表结构,增删速度快
    • 取出list集合中元素的方式
      • get(int index):通过脚标获取元素
      • iterator():通过迭代方法获取迭代器对象(接口型引用只能指向自己的子类对象)
        • 迭代器:取出集合中元素的一种方式
        • collection中都有iterator方法,每一个子类集合对象都具备迭代器
        • 1、迭代器在collection接口中是通用的,它替代了vector类中的enumeration(枚举)
        • 2、迭代器的next方法是自动向下取元素,要避免出现的NoSuchElementException
        • 3、迭代器的next方法返回值类型是object,需要类型转换
    Iterator it = al.iterator();
            while(it.hasNext())
            {
                sop(it.next());
            }
     
    • Set (集) 不可存放重复元素,元素存取是无序的
      • hashset : 线程不安全,存取速度快
      • treeset:线程不安全,可以对set集合中的元素进行排序
    • 问题:set集合元素的唯一性?
      • hashset 通过equals方法和hashcode方法来保证元素的唯一性
      • treeset通过compare to或者 compare方法 保证元素的唯一性。元素是以二叉树的形式存放的。
    【3】泛型
    • 特点:提高了程序的安全性、将运行期遇到的问题转移到了编译期、省去了类型强转的麻烦、泛型类的出现优化了程序设计
    • map集合
      • map集合和connection
        • map和connection在集合框架中属并列存在
        • map存储的是键值对
        • map存储元素使用put方法  collection使用add方法
        • map集合没有直接取出元素的方法,而是先转为set集合,再通过迭代获取元素
        • map集合中键要保证唯一性
      • map集合常用类
        • hashtable 线程安全、速度慢、不允许存放null值,已被hashmap替代
        • hashmap 线程不安全、速度快、允许存放null值
        • treemap 对键进行排序,排序原理与treeset相同
    【4】集合框架中的工具类
    • collections
      • 对集合进行查找
      • 取出集合中的最大值,最小值
      • 对list集合进行排序
    • arrays
      • 将数组转为list集合
      • 将数组进行排序
      • 对数组进行二分查找
    【5】新增for语句
    • for(数据类型  变量名 : 数组或集合 ){执行语句 ; }   //简化了对数据、集合的遍历
    • 函数:  
      • 返回值类型 函数名(参数类型... 形式参数) {执行语句;} //其实接收的是一个数组,可以指定实际参数个数
    拼命敲
  • 相关阅读:
    HDOJ 2095 find your present (2)
    HDOJ 2186 悼念512汶川大地震遇难同胞——一定要记住我爱你
    九度 1337 寻找最长合法括号序列
    九度 1357 疯狂地Jobdu序列
    HDOJ 1280 前m大的数
    九度 1343 城际公路网
    九度 1347 孤岛连通工程
    HDOJ 2151 Worm
    九度 1342 寻找最长合法括号序列II
    九度 1346 会员积分排序
  • 原文地址:https://www.cnblogs.com/wuyuwuyueping/p/9059048.html
Copyright © 2011-2022 走看看