黑马程序员---集合

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!----------------------

String

字符串是一个特殊的对象。

字符串一旦初始化就不可以被改变。

String str = abc

String str1 = new String(abc);

第一行代表的是一个对象,而第二行代表的是2个对象。

String 类的常用方法:

char charAt(int index)

方法返回指定索引位置的char 

int length()

返回字符串的长度

char[] toCharArray();

返回一个字符串数组

int indexOf(String str);

返回指定字符串在此字符串中第一次出现处的索引 

boolean endsWith(String str);

返回逆向索引字符串的下标

String[] split(String reg);

返回一个下标从零开始的一维数组,它包含

传回数组= Split(原始字串要找的字串拆成几个数组)

String substring(int index);

返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 

toString(char[] arr);

返回:该对象的字符串表示形式 

   StringBuffered

字符串的组成原理就是通过该类实现的。

StringBuffer可以对字符串内容进行增删。

StringBuffer是一个容器。

很多方法与String相同。

StingBuffer是可变长度的。

特有方法:

StringBuffer append(int x);

StringBuffer delete(int start, int end );

StringBuffer insert(int index,String str);

StringBuffer reverse();

JDK1.5出现一个StringBuilder,区别是StringBuffer是同步的,StringBuilder是非同步的。

基本数据类型的包装类

在刚开始的学习中,我认识了基本数据类型,那么对于JAVA这样的面相向的语言来说,这无疑是不符合面向对象要求的,因为基本数据类型是没有任何方法可以调用的。

所以,JAVA产生了一个包装类的概念,也就是在基本数据类型中衍生出的一种数据类型。

将基本数据类型封装成对象的好处在于可以在 对象中定义更多的功能方法操作该数据。

常用的操作之一:用于基本数据类型与字符串 之间的转换。

例:IntegerparseInt方法,intValue方法。

例程

JDK1.5以后,简化了定义方式。Integer x = new Integer(4);可以直接写成

Integer x = 4;//自动装箱。

x = x + 5;//自动拆箱。通过intValue方法。

需要注意:在使用时,Integer x = null;上面的代码就会出现NullPointerException

集合

为什么出现集合类?面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一 种方式。

 

数组和集合类同是容器,有何不同?数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象。

 

集合类的特点集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

集合示意图:

Collection接口有两个子接口:

List(列表),Set(集)

List:可存放重复元素,元素存取是有序的。

Set:不可以存放重复元素,元素存取是无序的。

LIST:

Vector:线程安全,但速度慢,已被ArrayList替代。

ArrayList:线程不安全,查询速度快。

LinkedList:链表结构,增删速度快。

取出LIst集合中元素的方式:

get(int index):通过脚标获取元素。

iterator():通过迭代方法获取迭代器对象。

LIST中的特有方法,迭代器:

迭代是取出集合中元素的一种方式。

因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。

用法:

1,

Iterator iter = l.iterator();

while(iter.hasNext())

{

System.out.println(iter.next());

}

2,

For(Iterator iter = i.iterator();iter.hasNext();)

{

System.out.println(iter.next());

}

注意事项:

迭代器在Collcection接口中是通用的,它替代了Vector类中的Enumeration(枚举)

迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException

迭代器的next方法返回值类型是Object,所以要记得类型转换。

Set:

HashSet:线程不安全,存取速度快。

TreeSet:线程不安全,可以对Set集合中的元素进行排序。

唯一性:

HashSet:通过equals方法和hashCode 方法来保证元素的唯一性。

TreeSet:通过compareTo或者compare 方法中的来保证元素的唯一性。

元素是以二叉树的形式存放的。

泛型(单独写一篇说)

MAP集合

MapCollection在集合框架中属并列存在

Map存储的是键值对

Map存储元素使用put方法,Collection使用add方法

Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素

Map集合中键要保证唯一性

MAP常用类:

Hashtable:线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。

HashMap:线程不安全,速度快,允许存放null 键,null值。

TreeMap:对键进行排序,排序原理与TreeSet 相同。

工具类:

Collections

对集合进行查找

取出集合中的最大值,最小值

List集合进行排序

 ……

Arrays

将数组转成List集合

对数组进行排序

对数组进行二分查找

增强FOR循环:

CollectionJDK1.5后出现的父接口Iterable就是提供了这个for语句。

格式:

for(数据类型变量名数组或集合)

{

执行语句;

}

简化了对数组,集合的遍历。

 

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!----------------------

 详细请查看:http://edu.csdn.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值