java集合(think in java 读书笔记)

来源:互联网 发布:js 向数组添加对象 编辑:程序博客网 时间:2024/04/25 15:14

1.数组

编译器不允许我们告诉它一个数组有多大。为了给数组创建相应的存储空间,必须编写一个初始化表达式。对于数组,初始化工作可在代码的任何地方出现。

在java中,保存和访问一系列对象的集合,最有效的方法就是数组。java的集合类只能容纳对象句柄。但对一个数组,却既可令其直接容纳基本类型的数据,亦可容纳指向对象的句柄。

(1)一维数组

定义数组的方法:int[] a1;或者int a1[]; 此时的a1是一个指向数组的句柄。

数组的初始化方法:

1)数组创建时,例如:int[] a1 = { 1, 2, 3, 4, 5 };

2)先定义,后new,例如:int[] a; a = new int[pRand(20)];

基本数据类型的数组元素会自动初始化成“空”值(对于数值,空值就是零;对于char,它是null ;而对于boolean,它却是false)。

对于非基本类型对象的数组,不能用这种方式初始化,因为需要用new来创建数组中的每一个对象。此时访问数组,会报空指针异常。

非基本类型对象数组可以这样创建:

Integer[] a = {
new Integer(1),
new Integer(2),
new Integer(3),
};(最后一个逗号可以有也可没有)

3)定义Object[] ,再赋值成其他的非基本类型数组,例如:

new Object[] {
new Integer(47), new VarArgs(),
new Float(3.14), new Double(11.11) }

(2)多维数组

创建方法:

1)

int[][] a1 = {
{ 1, 2, 3, },
{ 4, 5, 6, },
};

2)

int[][][] a3 = new int[pRand(7)][][];

for(int i = 0; i < a3.length; i++) {
a3[i] = new int[pRand(5)][];
for(int j = 0; j < a3[i].length; j++)
a3[i][j] = new int[pRand(5)];
}

2.集合

Java 提供了四种类型的“集合类”:Vector(矢量)、BitSet(位集)、Stack(堆栈)以及Hashtable(散列表)。

常见的集合类有这些种:

实现Collection接口的:Set、List以及他们的实现类:

实现Map接口的:HashMap,HashTable,

实线边框的是实现类折线边框的是抽象类点线边框的是接口


(1)HashSet

HashSet是Set接口的一个子类,主要的特点是:里面不能存放重复元素,而且采用散列的存储方法,所以没有顺序。这里所说的没有顺序是指:元素插入的顺序与输出的顺序不一致。

常用方法:

Set<String> set=new HashSet<String>();set.add("a");
Iterator<String> iter=set.iterator();while(iter.hasNext()){
    System.out.print(iter.next()+" ");}
for(String e:set){    System.out.print(e+" ");}

(2)ArrayList

ArrayList是List的子类,和HashSet相反,可以存相同的元素,是有序的。对ArrayList进行访问,迭代器将从索引0开始,每迭代一次,索引值加1。

常用方法:

List<String> arrList=new ArrayList<String>();
arrList.add("a");
Iterator<String> iter=arrList.iterator();while(iter.hasNext()){    System.out.print(iter.next()+" ");}
for(String e:arrList){    System.out.print(e+" ");}

(3)LinkList

LinkedList是一种可以在任何位置进行高效地插入和删除操作的有序序列。(双向链表)

(4)HashMap

(5)Vector

()


集合类的缺点:

1)类型未知

参考:

1.《Think in java》

2.《java 集合类详解》 http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526822.html



0 0
原创粉丝点击