JAVA学习十九:集合框架
来源:互联网 发布:网络暴力的危害 编辑:程序博客网 时间:2024/05/16 06:26
Java学习——集合框架
集合类的特点:
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
Collection:
|—— List:元素是有序的,元素可以重复,因为该集合体系有索引。
|—— ArrayList:底层的数据结构使用的是数组结构。
特点:查询速度快,但是增删稍慢,线程是不同步的。
|—— LinkedList:底层使用的是链表数据结构。
特点:增删速度很快,查询速度慢。
|—— Vector:底层是数组结构,线程同步,已被ArrayList取代。
|—— Set:元素是无序的,元素不可以重复。
|—— HashSet:底层数据结构是哈希表,线程是不同步的。
特点:HashSet是通过元素的hashCode和equals来保证元素的唯一性。
|—— TreeSet:可以对Set集合中的元素进行排序。
特点:底层数据结构是二叉树,保证元素唯一性的依据是compareTo()方法的返回值;如果返回值为0,表示两个元素主条件相等,当主条件相等时,一定要判断一下次要条件是否相等。
Map集合:
Map
|—— Hashable:底层是哈希表数据结构,不可以存入null键和null值。
特点:该集合是线程同步的,JDK1.0版本时代用的集合,缺点是效率太低。
|—— HashMap:底层是哈希表数据结构,允许使用null键和null值。
特点:该集合是不同步的,它取代了hashable。JDK1.2版本才出现。效率高。
|—— TreeMap:底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序。
注:Set集合底层使用了Map集合。
Map集合的特点:该集合存储键、值对应的数据,一对一对往里存的,一个键对应一个值,而且要保证键的唯一性。
Map集合的特有两种取出方式:keySet和entrySet
第一种:keySet将Map中所有的键存入到Set集合,因为Set具备迭代器,可以使用迭代器取出所有的键,在通过Map的get方法获取每一个键对应的值。
例如:Set<String> s = map.keySet();//keyset()获取map集合中所有的键,并把键存入Set中。
第二种:entrySet将Map集合中的键、值映射关系存入到Set集合,而这个键、值映射关系的数据类型就是:Map.Entry类型。
例如:Set<Map.Entry<String,String>> s = map.entrySet();
Map集合的取出原理:将Map集合转换成Set集合,在通过迭代器取出。
|—— keyset():返回类型:Set<E>
|—— entrySet():返回类型:Map.Entry<K,V>
集合框加:迭代器
迭代器:是用于取出集合中元素的工具。
迭代器的使用:
ArrayList al = new ArrayList(); //创建ArrayList集合
al.add(“java 01”); //向ArrayList集合中添加元素
al.add(“java 02”);
al.add(“java 03”);
Iterator it = al.iterator(); //对ArrayList集合进行迭代。
while (it.hasNext()) //如果it中还有元素,就继续next()取出元素。
{
System.out.println(it.next()); //取出元素。并输出取出的元素。
}
集合框加:泛型、泛型类、泛型方法、泛型接口
泛型:是在JDK1.5版本以后才出现的新特性,它的作用是用于解决安全性问题,它是一个类型安全机制。
泛型的好处:
1、将运行时期出现的问题classcastException(类型转换异常),转移到了编译时期。
2、避免了类型强制转换的麻烦。
泛型的格式:通过 < >一对尖括号来定义要操作的引用数据类型。
泛型的使用场合:在使用java提供的对象时,通常在集合框架中很常见,只要见到< >就要定义泛型,其实< >就是用来接收类型的。
当要使用集合时,将集合中要存储的数据类型作为参数传递到< >中即可。
泛型类:当类中要操作的引用数据类型不确定的时候,早期的作法是定义Object来完成扩展(JDK1.4版本以前)。现在的作法是定义“泛型类”来完成扩展。
当泛型定义在类上后,该类中所有方法操作的元素类型都和类上定义的泛型相同(相当于被固定了类型了),泛型类定义的泛型,在整个类中都有效,如果被类中方法使用,所有方法要操作的类型就已经被固定了。
泛型类示例:
class Tool<EVA> //泛型类
{
private EVA e;
public void set(EVA e) //设置操作类对象。
{
this.e = e;
}
public EVA get() //返回操作类对象。
{
return e;
}
}
泛型方法:为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上,这样的方法便被称为泛型方法。
泛型方法示例:
Class Demo
{
public <EVA> void show(EVA e){} //泛型方法。
}
静态的泛型方法:静态方法不可以访问类上定义的泛型,如果静态方法操作的引用数据类型不确定,可以将泛型定义在静态方法上;静态方法的泛型只能定义在静态方法上。
例如:
class Demo
{
public static <EVA> void method(EVA e){} //静态泛型方法。
}
注:不管是静态的还是非静态的方法,在定义泛型时,泛型定义的位置都是在返回值类型符前面,函数修饰符后面。
泛型接口:把泛型定义在接口上,在实现这个接口时,有二种方法可以实现泛型接口。
第一种方法:把需要操作的类型传递入接口的泛型括号内。
例如:
interface Inter <EVA> //泛型接口
{
void show(EVA e);
}
//实现Inter接口,并把要操作的类型传递到泛型括号内
class InterEmpl implements Inter<String>
{
public void show(String srt){}
}
第二种方法:在实现这个泛型接口时,当类自己都不知到以后要操作什么类型时,就把这个类也定义成泛型类,并继承这个泛型接口,在后面的使用中,根据实际情况再来传入需要操作的类型。
例如:
interface Inter <EVA>
{
void show(EVA e);
}
//实现这个接口,并继承这个泛型。
class InterImpl <EVA> implements Inter<EVA>
{
public void show(EVA e){}
}
- JAVA学习十九:集合框架
- java并发编程(十九)----(JUC集合)总体框架介绍
- 学习java集合框架
- Java学习---集合框架
- Java 集合框架学习
- java学习--集合框架
- Java集合框架学习
- Java集合框架学习
- 学习java集合框架
- 【java学习】集合框架
- (二十九)、集合框架
- Java集合框架学习记录
- JAVA集合类框架学习
- Java集合类框架学习
- java学习之集合框架
- java集合框架学习笔记
- java 集合框架学习总结
- Java集合框架类学习
- JAVA学习十八:String类、StrinBuffer类
- 天梯 1160 蛇形矩阵
- cocos 事件分发2
- UVA 11111 Generalized Matrioshkas
- IP地址格式转换
- JAVA学习十九:集合框架
- Hive的JOIN用法
- MySQL 优化Limit分页
- C++中STL容器的find的应用
- 几种简单的排序算法
- uva10494 (高精度除法)
- udhcp源码详解 续
- 解决window下GVedit显示中文乱码的问题
- 在 actionbarsherlock 上如何对 item 使用自定义的 view