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(数据类型  变量名 : 数组或集合 ){执行语句 ; }   //简化了对数据、集合的遍历
  • 函数:  
    • 返回值类型 函数名(参数类型... 形式参数) {执行语句;} //其实接收的是一个数组,可以指定实际参数个数
posted @ 2018-05-19 01:32  wuyueping  阅读(127)  评论(0编辑  收藏  举报