javase重新开始系列之集合与泛型
2016-08-11 11:11
183 查看
在数据处理时经常需要用到数据结构,数据结构涉及:队列、栈、链表、线性表、树、图、排序、查找等内容
java中提供一些类与接口来处理数据,对应某些数据结构,象栈、链表、哈希表等都有对应的类
java中有一个集合(collection)接口,集合可视为一种数据结构
Set(集)和List(列表)均继承该接口
Set :表示无重复元素的元素集合;两个包含相同对象的Set 对象可视为相等。
HashSet(哈希集)实现了Set接口
SortedSet(有序集)继承了Set接口,TreeSet实现了SortedSet接口
List:列表是一种有序集合,也称为序列;列表具有索引,表示元素在列表中的位置。
ArrayList、Vector、LinkedList实现List接口
上面三个类都是同步的(线程安全)
Stack(栈)类:后进先出。push()进和pop()出
Map(映射)接口:键值对集合
HashMap实现Map接口,不是同步的(不是线程安全的),而且不接受null值
SortedMap接口继承Map接口,是有序的
Hashtable类继承Dictionary:作为键的对象必须实现hashcode()和equals()才能成功存储。
Iterator:迭代器,用于迭代上述的集合
ListIterator:列表迭代器
Enumeration接口:用于遍历一个集合的所有元素
Comparator接口:用于指定集合的元素排序顺序
泛型:
泛型是jdk1.5后引入的
用于分析、限制集合中元素的类型,例如List<String> alist= new ArrayList<String>(); // 限制该数组列表元素需为String对象
好处:
通过编译检查存储的数据是否正确
减少强制转换
限制:
不能是简单类型(需使用对应的包装类,借由java的自动装箱/拆箱)
减少强制类型
泛型类:由类型参数修饰的类称为泛型类
格式 : 数据类型 <类型参数>
例如:
public class ArrayList<E>{
boolean add(E e) {…}
E get(int index){…}
}
泛型方法
public< T>T fun(T t){ // 可以接收任意类型的数据作为参数
return t ; // 直接把参数返回
}
类型通配符?
Info<?> temp //可以接收任意的泛型对象
另:
enum(枚举)是JavaEE5.0之后被加入进来,它可以有自己的变量、方法,或实现一个或多个接口
它不能有public的构造方法,可保证客户代码没有办法新建一个enum实例.
所有的枚举都是public,static,final的。注意这一点只针对枚举值。
Enum默认实现了java.lang.Comparable接口。
Enum覆载了toString方法,因此调用Color.Blue.toString()默认返回字符串 “Blue”。
Enum提供了一个valueOf方法,它和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue
Enum提供了values方法,可遍历所有的枚举值。
Enum有一个oridinal方法,这个方法返回枚举值在枚举类中的顺序.
具体写法:
enum Size{//代表服务的尺码
S,M,L,XL,XXL,XXXL;
}
java中提供一些类与接口来处理数据,对应某些数据结构,象栈、链表、哈希表等都有对应的类
java中有一个集合(collection)接口,集合可视为一种数据结构
Set(集)和List(列表)均继承该接口
Set :表示无重复元素的元素集合;两个包含相同对象的Set 对象可视为相等。
HashSet(哈希集)实现了Set接口
SortedSet(有序集)继承了Set接口,TreeSet实现了SortedSet接口
List:列表是一种有序集合,也称为序列;列表具有索引,表示元素在列表中的位置。
ArrayList、Vector、LinkedList实现List接口
上面三个类都是同步的(线程安全)
Stack(栈)类:后进先出。push()进和pop()出
Map(映射)接口:键值对集合
HashMap实现Map接口,不是同步的(不是线程安全的),而且不接受null值
SortedMap接口继承Map接口,是有序的
Hashtable类继承Dictionary:作为键的对象必须实现hashcode()和equals()才能成功存储。
Iterator:迭代器,用于迭代上述的集合
ListIterator:列表迭代器
Enumeration接口:用于遍历一个集合的所有元素
Comparator接口:用于指定集合的元素排序顺序
泛型:
泛型是jdk1.5后引入的
用于分析、限制集合中元素的类型,例如List<String> alist= new ArrayList<String>(); // 限制该数组列表元素需为String对象
好处:
通过编译检查存储的数据是否正确
减少强制转换
限制:
不能是简单类型(需使用对应的包装类,借由java的自动装箱/拆箱)
减少强制类型
泛型类:由类型参数修饰的类称为泛型类
格式 : 数据类型 <类型参数>
例如:
public class ArrayList<E>{
boolean add(E e) {…}
E get(int index){…}
}
泛型方法
public< T>T fun(T t){ // 可以接收任意类型的数据作为参数
return t ; // 直接把参数返回
}
类型通配符?
Info<?> temp //可以接收任意的泛型对象
另:
enum(枚举)是JavaEE5.0之后被加入进来,它可以有自己的变量、方法,或实现一个或多个接口
它不能有public的构造方法,可保证客户代码没有办法新建一个enum实例.
所有的枚举都是public,static,final的。注意这一点只针对枚举值。
Enum默认实现了java.lang.Comparable接口。
Enum覆载了toString方法,因此调用Color.Blue.toString()默认返回字符串 “Blue”。
Enum提供了一个valueOf方法,它和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue
Enum提供了values方法,可遍历所有的枚举值。
Enum有一个oridinal方法,这个方法返回枚举值在枚举类中的顺序.
具体写法:
enum Size{//代表服务的尺码
S,M,L,XL,XXL,XXXL;
}
相关文章推荐
- 【JavaSE系列-基础篇6】——数组,集合,泛型宏观把控
- javase重新开始系列之log4j
- Java入门系列-19-泛型集合
- javase重新开始系列之数组和常用类
- javase重新开始系列之JDBC
- 快速入门系列--CLR--03泛型集合
- 【JavaSE系列-基础篇6】——泛型原始类型
- javaSE_8系列博客——集合——宏观概述
- javase重新开始系列之多线程基础
- 重新开始学习javase_集合_List
- 【JavaSE系列-基础篇6】——泛型方法
- javase重新开始系列之基础类型与运算符
- javase重新开始系列之网络编程
- javase重新开始系列之OOP简要
- 重新开始学习javase_集合_Set
- JavaSE入门学习40:Java集合框架之泛型
- JavaSE_8系列博客——Java语言的特性(六)--泛型(2)--何时何地使用泛型?
- javase重新开始系列之抽象类与接口
- javaSE_8系列博客——集合——简介部分
- 【JavaSE系列-基础篇6】——为什么使用泛型?