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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值