您的位置:首页 > 职场人生

黑马程序员--Java笔记10--Collection集合、 Map集合、泛型

2015-11-19 13:20 525 查看
------- android培训java培训、期待与您交流! ----------
集合

基本数据类型包装类:

byte   short    int       long    float   double  char           boolean

Byte  Short  Integer  Long  Float  Double  Character  Boolean

基本数据类型-->字符串

1.基本数据类型+“”

2.用String类中的静态方法valueOf(基本数据类型)

字符串-->基本数据类型

1.使用包装类中的静态方法xxx parseXxx(“xxx”);

int/long/boolean parseInt/Long/Boolean(String str);

只有Charactor没有parse方法

2.如果字符串被Integer进行对象的封装,可使用另一个非静态方法intValue

3.用Integer的静态方法valueOf(String str)

十进制-->其他进制

1.String toBinaryString(int i);转二进制

2.String toOctalString(int i);转八进制

3.

String toHexString(int i);转十六进制

4.String toString(int i,int radix);转radix进制

其他进制-->十进制

int parseInt(String str,int radix);将radix进制的str转化为十进制

自动装箱,自动拆箱:JDK1.5以后,自动装箱一个字节以内不再重新开辟空间,以外会重新开辟空间。

练习:对一个字符串中的数值进行从小到大的排序“20 93 4 -3 93 74 39”

集合类:用于封装特有数据,存储个数不确定对象

特点:用于储存对象的容器,集合长度可变,不可以储存基本数据类型值

集合数组的区别:集合长度可变,数组长度固定;集合只存储对象,数组可存储基本数据类型。

集合框架的构成和分类:

 

Collection接口:



常见方法:

①:添加

boolean add(Object obj);添加时判断已存在则返回false

boolean addAll(Collection coll);

②:删除

boolean remove(Object obj);

boolean removeAll(Collection coll);

void clear();

③:判断

boolean contains(Object obj);

boolean containsAll(Collection coll);

boolean isEmpty();

④:获取

int size();

Iterator iterator();迭代器

该对象必须依赖于容器,是在容器中内部实现的,且实现方法不同

⑤:其他

boolean retainAll(Collection coll);取交集

Object toArray();将集合转成数组

List、Set(Collection子接口)区别:

List:有序(存入和取出顺序一致),元素都有索引(角标),允许元素重复

Set:元素不能重复,无序

List

特有的常见方法:

①:添加

void add(index ,element);

void addAll(index,collection);

②:删除

Object remove(index );

③:修改

Object set(index ,element);

④:获取

Object get(index );

int indexOf(object);//不包含则返回-1

int lastIndexOf(object);

List subList(from,to)返回之间的部分

⑤:其他

在迭代器过程中,不要使用集合操作元素,容易出现异常,可以使用迭代器接口的子接口ListIterator来完成在迭代中对元素的更多操作

Iterator方法:hasNext();  next();

List的实现类:

Vector:内部是数组结构,同步的,增删查询都很慢(几乎不用)

ArrayList:内部是数组结构,是不同步的,替代了Vector,查询快

LinkedList:内部是链表结构,是不同步的,增删速度快

LinkedList方法:

addFirst();//在链表前端添加

addLast();

getFirst();//获取但不移除,若链表为空,抛出NoSuchElementException

getLast();

removeFirst();//获取并移除,若链表为空,抛出NoSuchElementException

removeLast();

JDK1.6更新后对应上方的新方法:

offerFirst();

offerLast();

peekFirst();//获取但不移除,若链表为空,返回null

peekLast();

pollFirst();//获取并移除,若链表为空,返回null

pollLast();

Set:

其接口中的方法和Collection一致

HashSet:内部数据结构是哈希表,是不同步的

TreeSet:可以对Set集合中的元素进行排序,是不同步的

哈希表判断元素是否相同:先判断哈希值(判断的是对象的HashCode方法),若相同,再判断内容(用equals方法);

练习:

1.往HashSet集合中存储Person对象,若姓名年龄相同视为同一元素

2.定义功能去除ArrayList中的重复元素

3.无序变有序,使用LinkHashSet

TreeSet

判断元素唯一性方式:返回值是0即相同元素,不存

对元素进行排序:

方法一:让元素自身具备比较功能,元素需实现Comparable接口,覆盖compareTo方法;

方法二:让集合自身具备比较功能,定义类实现Comparator接口,覆盖compare方法,该类作为参数传递给TreeSet集合的构造函数。

如果自定义类实现了Comparable接口,并且TreeSet集合的构造函数中也传入了比较器,那么将以比较器的比较规则为准

TreeSet集合的底层是以二叉树进行排序的

练习:对字符串进行长度排序

二叉树结构:



泛型:JDK1.5以后出现的新特性,用于解决安全问题,是一个类型安全机制

好处:将运行时期出现的问题ClassCastException,转移到了编译时期,方便程序员解决问题,让运行时问题减少,安全,避免了强制转换的麻烦

格式:通过<>来定义要操作的引用数据类型

当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可

泛型限定:

当类型不确定时,可用通配符“?”表示

上限:限定为E类型及其子类<? extends E>

下限:限定为E类型及其父类<? super E>

Map:

Map一次添加一对元素(双列集合,存储键值对),须保证键的唯一性

Collection一次添加一个元素(单列集合)

Map常用方法:

①:添加

value put(key,value);返回前一个和key关联的值,如果没有返回null

②:删除

value remove(Object key);根据指定的key删除这个键值对

void clear();

③:判断

boolean containsKey(key)

boolean containsValue(value);

boolean isEmpty();

④:获取

value get(key);如果没有返回null

int size();获取键值对个数

Set keyset();返回此映射中的键的set视图

Set<Map.Entry<k,v>>  entrySet();返回此映射中的映射关系的set视图

Map集合元素取出方式:

1.Set<k>  keyset:将Map中所有的键存入到Set集合,因为Set具备迭代器

Map:集合取出原理:将map集合转成set集合,再通过迭代器取出

2.Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,这个关系的数据类型就是Map.Entry

Map常用子类:

Hashtable:底层数据结构哈希表,不允许null键null值,线程同步,效率低

Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合

HashMap:底层数据结构是哈希表,允许null键null值,线程不同步,效率高

TreeMap:底层数据结构二叉树,线程不同步,可以对Map中的键进行排序

哈希表排序的两个函数:hasCode;  equals;

HashMap中的键若存入两次不同的值,后面的值会覆盖上一个值

练习:“fdqavcbsacdfs”获取该字符串中每一个字母出现的次数,要求打印结果:a(2)b(1)...

 

98fb
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: