关闭

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

203人阅读 评论(0) 收藏 举报
------- 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();将集合转成数组

ListSetCollection子接口)区别:

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:底层数据结构哈希表,不允许nullnull值,线程同步,效率低

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

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

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

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

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

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

 

0
0
猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2428次
    • 积分:178
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档