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
- java集合(think in java 读书笔记)
- think in java 读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- 读书笔记:think in java
- 读书笔记----THINK IN JAVA
- think in java 读书笔记
- think in java 读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Android开发技术点2——Fragment叠加点击穿透解决方案
- 为什么这么多的商业安卓开发者不做混淆?
- iOS 用户头像选择以及上传服务器
- 对经常所使用算法的一些简单总结
- 深入浅出统计学
- java集合(think in java 读书笔记)
- linux线程同步(2)-条件变量
- web.xml中配置Struts标记库<taglib>标签总是报错出现红色下划线
- P1313金明的预算方案 动态规划(未解决)
- 64位ubuntu缺少ia32的lib库解决办法
- linux线程同步(1)-互斥量
- AChartEngine应用之PieChart(饼图)
- 安装gef,subclipse,m2eclipse,m2e-extras插件
- hdu 5319 Painter(模拟)(思维)(模拟)