---------------------- android培训、java培训、期待与您交流! ----------------------
一 集合类
一, 集合的概述:所谓集合,就是存储对象最常用的一种方式。
1。集合的特点:集合只用于存储对象,长度是可变的,可以存储不同类型的对象。
2。数组和集合类的不同
数组虽然可以存储对象,但是长度固定,集合长度是可以变得。数组中可以存储基本数据类型,集合只存储对象。
二。共性方法。
1.添加元素 对象名.add(Objcte obj);
2.删除元素 对象名.remove(需要删除的元素); 对象名.clear(); 清空集合
3.获取个数集合长度 对象名.size();
4.判断元素是否存在 对象名.contais();
5.取交集 对象1.retainAll(对象2); 对象1只会保留对象2中相同的元素
(add方法的参考类型是object.以便于接受任意类型对象。集合中存储的都是对象的引用)。
6.Interator 迭代器
Iterator是一个接口,获取迭代器,用于取出集合中的元素。迭代器就是集合的取出元素的方式。语法:
Ierator int =对象名。iterator();
while(it.hasNext() 用于判断
System.out.println(it.next());
二 list
一。list的特有方法。
list:元素是有序的,元素可以重复,因为该集合体系有索引。凡是可以操作角标的方法,都是该体系特有方法。
增:add(index.elements); 指定位置添加元素。
删:remove(index): 删除指定位置上的元素。
该:set(index.elements); 修改指定角标位置上的元素。
获:get(index); 通过角标获取元素。
二。list Iterator
list Iterator是list集合特有的迭代器,list Iterator是Iterator的子接口。在迭代是,不可以通过集合对象的方法操作集合中的元素,因为会发生异常。所以在迭代是,只能有迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他操作如添加,修改等,就需要用其子接口list Iterator,该接口只能通过list集合list Iterator方法获取。
list集合ListIterator方法获取:
对象名。previous 对象名。hasprevious
三。list集合具体对象特点。
1.ArrayList:底层使用数组结构。特点:查询速度快,但是增,删稍慢(线程不同步)。
2Linkedlist:底层使用链接表数据结构。特点:增,删速度快,查询速度稍慢。
3.vector:底层是数组数据结构,(线程同步)被Arraylist代替了,支持枚举,但是被迭代器代替。
注意:在迭代时,循环中,nest调用一次,就需要hasNest判断一次
三 set
一。set:元素无序,(存入取出的顺序不一致)元素不可重复。set集合的功能和collection一致。
1常见子类:
hashset:底层数据结构结果是哈希表,线程同步。
Treeset:可以对set集合中的元素进行排序。
2.hashset如何保证元素的唯一性。
通过元素的两个方法,hashCode和equals来完成。如果元素的hashCode值相同,才会判断equals是否为true。如果不相同,就不会调用equals方法。
注意;对于判断元素是否存在,以及删除等操作,依赖的方法元素hashCode和equals方法。
二。treeset
底层数据结构是二叉树,保持了元素的唯一性的依据是compare方法retain。
1.treeset排序的第一种方式:让元素自身具备比较性,元素需要实现compareble接口,覆盖compareTo方法,这种方式也成为元素的
自然顺序或者叫做默认顺序。
2.Treeset排序的第二种方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就要让集合自身具备比较性。
(在集合初始化时,就有了比较方式,通过构造函数)。
3.定义了比较器,将比较强对象作为参数传递给Treeset集合的构造函数,当两中排序都存在是,以比较器为主。
四 泛型
一。java1.5之后出现的新特性,用于解决安全问题,一个安全机制。
1。好处:将运行时期出现问题转移到编译时期,方便了程序解决安全问题,让运行时间减少,安全。
避免了强制转换的麻烦。
2.格式:通过<>来定义要操作的引用数据类型。其实<>就是用来接收类型的。当使用集合时,将集合中要存储的数据类型作为参数
传递即可。
3。泛型类:当类中要操作的引用数据类型不确定的时候,早就定义object来完成扩展,现在定义泛型来完成扩展。语法:
class Util<QQ>
{
private QQ q;
public void setObject(QQ q)
{
this.q-q;
}
public QQ getObejct()
{
return q;
}
}
4.泛型方法。
泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的同体系后,所有的操作类型已经固定了,为
了不让同方法可以操作不同类型,而且类型还不确定,那么可以讲泛型定义在方法上。
(静态方法不可以访问类上定义的泛型。如果静态方法作用引用数据类型不确定,可以将泛型定义在方法上)
五 集合map
一,集合map:该集合存储值对,一对一对往里存,而且保证键的唯一性。
二。map集合共性方法。
1.添加(如果出现添加时,相同的键,那么后添加的值会覆盖原有键对应值,并put方法返回被覆盖的值)
put (K key, V value);
putAll(map<?extends k,?extends v> m);
2。删除
clear();
remove(object key);
3.判断。
containsValue(Object value);
comtainsKey(Object key);
isEmpry();
4.获取
get(Object key);
size();
values(); 获取map集合中所有的值。
entryset():将map集合中的映射关系存入到set集合中,这个关系的数据类型就是:map.Entry。
keyset();将map中所有的键存入set集合中,因为set具备迭代器,所有就可以迭代方式取出所有值,在根据get方法获取对应值。
三,map集合子类
1.Hashtable:实现哈希表数据结构,不可以存入Null键,Null值(线程同步);
2Hashmap:底层是哈希表数据结构,允许使用Null键Null值(线程不同步)。
3Treemap:底层是二叉树数据结构,线程不同步,用于给map集合键排序。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima