java编程思想(持有对象)

容器:在实际开发中,需要将使用的对象存储于特定数据结构的容器中,基本类型为list,set,queue,map

java容器类类库的作用是保存对象:

1.collection:一个独立元素的序列,这些元素符合一条或多条规则,list指必须按照插入的顺序保存元素,而set不能有重复元素,queue指按照排队规则来确定对象产生的顺序

2.map:键值对对象。

collection(接口)中包含两个子接口(list,set):list为可重复集,map为不可重复集

迭代器iterator用于遍历集合的元素,删除时调用remove,remove方法必须跟在next方法的后面并且不能连续remove,除非再次next方法遍历

增强for循环:java1.5之后支持,编译器会在编译阶段自动转为迭代器模式

list中常见实现类:arraylist(动态数组):适合随机访问,linkedlist(链表,添加了作为栈,队列,双端队列的方法):适合插入和删除数据,具体实现例如:Queue<Integer> q = new LinkedList<Integer>();向上转型实现 

list中集合转数组:toarray,数组转集合:aslist

collections为集合的工具类,提供了许多便于操作集合的方法

collections.sort()方法进行集合的排序,使用collection.sort排序的集合元素必须是comparable接口的实现类(bean继承comparable)并且需要重写抽象方法 int compareTo(T t)

如果需要在排序的操作中临时指定比较规则,可以使用comparator接口的回调方法,并重写int compareTo(T t1,T2)

队列(queue):先进先出:使用linkedlist实现

deque:queue的子接口,为双端队列,如果将deque限制为只从一端入队与出队,则可以实现栈(stack)的数据结构

hashset:使用了复杂的方式来存取数据,但其为最快获取元素的方式

treeset:按照比较结果的升序保存对象

linkedhashset:按照被添加的顺序保存对象

hashmap:提供了最快的查找技术(hashset为map封装后的数据结构),数据结构为hash表

treemap:按照比较结果的升序来保存对象,数据结构为内部排序的二叉树

linkedhashmap:按照插入顺序保存,同时保留了haspmap的查询速度(底层为hash表与双向循环链表共同实现)

新程序中不应该使用过时的vector,hashtable,stack

hash表原理:通过key值获得hashcode调用hash算法(hash算法例如16的取余等)确定将要存储的空间(bucket:一般为16个,并且以链表的形式存在),然后调用equals的方法和bucket找到对应的bucket后的链表(每个bucket都对应一个链表),在链表后依次递加

hashcode方法是在object方法中定义的,应该被妥善重写(object中的方法返回该对象的整数内存地址)

重写hashcode的注意点:

1.与equls方法的一致性,equals为true的两个对象的hash值应该相同

2.hashcode返回值应该符合hash算法的要求,一般可以使用ide工具提供的自动生成hashcode的方法

map遍历的方式:使用set方式遍历key或者遍历键值对

书籍:(java编程思想)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值