week5

关于集合框架:

集合类的由来:
对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定。
就使用集合容器进行存储。

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

集合容器因为内部的数据结构不同,有多种具体容器。
不断的向上抽取,就形成了集合框架。

框架的顶层Collection接口:

Collection的常见方法:

1,添加。
boolean add(Object obj):
boolean addAll(Collection coll):

2,删除。
boolean remove(object obj):
boolean removeAll(Collection coll);
void clear();

3,判断:
boolean contains(object obj):
boolean containsAll(Colllection coll);
boolean isEmpty():判断集合中是否有元素。

4,获取:
int size():
Iterator iterator():取出元素的方式:迭代器。
该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。
所以该迭代器对象是在容器中进行内部实现的。
对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,
也就是iterator方法。

Iterator接口就是对所有的Collection容器进行元素取出的公共接口。
其实就是抓娃娃游戏机中的夹子!

5,其他:
boolean retainAll(Collection coll);取交集。
Object[] toArray():将集合转成数组。

-------------------------------
Collection
|--List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。
|--Set:元素不能重复,无序。

List:特有的常见方法:有一个共性特点就是都可以操作角标。

1,添加
void add(index,element);
void add(index,collection);

2,删除;
Object remove(index):

3,修改:
Object set(index,element);

4,获取:
Object get(index);
int indexOf(object);
int lastIndexOf(object);
List subList(from,to);

list集合是可以完成对元素的增删改查。

List:
|--Vector:内部是数组数据结构,是同步的。增删,查询都很慢!
|--ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。
|--LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快。

et:元素不可以重复,是无序。
Set接口中的方法和Collection一致。
|--HashSet: 内部数据结构是哈希表 ,是不同步的。
如何保证该集合的元素唯一性呢?
是通过对象的hashCode和equals方法来完成对象唯一性的。
如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。
如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。
如果为true,视为相同元素,不存。如果为false,那么视为不同元素,就进行存储。

记住:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。
一般情况下,如果定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。
建立对象判断是否相同的依据。

|--TreeSet:可以对Set集合中的元素进行排序。是不同步的。
判断元素唯一性的方式:就是根据比较方法的返回结果是否是0,是0,就是相同元素,不存。

TreeSet对元素进行排序的方式一:
让元素自身具备比较功能,元就需要实现Comparable接口。覆盖compareTo方法。

如果不要按照对象中具备的自然顺序进行排序。如果对象中不具备自然顺序。怎么办?
可以使用TreeSet集合第二种排序方式二:
让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。
将该类对象作为参数传递给TreeSet集合的构造函数。

if(this.hashCode()== obj.hashCode() && this.equals(obj))

哈希表确定元素是否相同
1,判断的是两个元素的哈希值是否相同。
如果相同,在判断两个对象的内容是否相同。

2,判断哈希值相同,其实判断的是对象的hashCode的方法。判断内容相同,用的是equals方法。

注意:如果哈希值不同,是不需要判断equals。

时间: 2024-10-12 17:10:37

week5的相关文章

[HB2014 Week5] Allot 人员分配

这两天决心专门搞好网络流了 - - 题解在什么瞎胡搞跟我说要连n+2和n+1容量为无穷的边…我看了下std才做的… 坑死人的地方就是,需要求多次网络流,每次别忘了把流给清空了…这次是用链表所以专门写了一个clearflow过程,如果是静态链表就可以fillchar了… program allot2; type ptype=^node; node=record v,w,flow:longint; next:ptype; end; const maxn=400+10; inf=maxlongint;

20165310 NetSec2019 Week5 Exp3 免杀原理与实践

20165310 NetSec2019 Week5 Exp3 免杀原理与实践 一.免杀原理 杀软是如何检测出恶意代码的 基于特征码的检测:特征码就是一段恶意程序有但是正常程序没有的一段代码,当杀软检测到一个程序里有和特征码库中匹配的特征码,就会将它作为恶意程序处理. 启发式恶意软件检测:杀软根据程序的片面特征去推断其是否包含恶意代码,通常缺乏精确判定依据. 基于行为的恶意软件检测:是加入了行为监控的启发式检测,更加精确.当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,例如修改

TeamWork#3,Week5,Release Notes of the Alpha Version

在这里的是一款你时下最不可或缺的一款美妙的产品. “今天哪家外卖便宜?” “今天这家店在哪个网站打折?” “这家店到底哪个菜好吃?” 这些问题你在寝室/办公室每天要问几次?还在为了找一家便宜的外卖店而下几个不同的app一个一个搜索.比较?现在你要的大礼包来啦!少年! 我们的app集成多家外卖网站的外卖服务,餐品直观的横向比较让你在外卖的海洋中买到实惠买到美味(?¯ω¯?). 所以快来体验吧啊!!!!!!!!!!!!!!!!!!!!!!!!!!!! 那么到底我们这个神奇的软件怎么用呢! 一.主要功

TeamWork#3,,Week5,Scrum Meeting 11.13

最近我们根据之前发现的问题, 补充了相关知识,正在努力修复出现的问题,调整程序结构. 成员 已完成 待完成 彭林江 之前没有考虑到网站信息更新导致的程序可变性,正在调整爬虫程序结构 更换爬虫结构 郝倩 之前没有考虑到网站信息更新导致的程序可变性,正在调整爬虫程序结构 更换爬虫结构 高雅智 管理任务进度,重定位人力资源和计划更新 按计划重定位任务,就爬虫部分与同学讨论并尝试更换爬虫结构 牛强 因爬虫未完成所以没有进行相关测试工作 与张明培育研究安卓的服务器网络连接 王卓 完成了UI初步设计 与实现

TeamWork#3,Week5,Scrum Meeting 11.9

由于经验不足和储备知识不够,最近我们的项目遇到了一些技术问题,需要对项目进行重新计划.我们总结了经验教训,找出了问题所在,明确了要补充的知识,加紧学习,将会在一周之内解决相关问题. 成员 已完成 待完成 彭林江 爬虫因技术问题正在补充相关知识 更换爬虫结构 郝倩 爬虫因技术问题正在补充相关知识 更换爬虫结构 高雅智 管理任务进度,重定位人力资源和计划更新 按计划重定位任务,就爬虫部分与同学讨论并尝试更换爬虫结构 牛强 因爬虫未完成所以没有进行相关测试工作 与张明培育研究安卓的服务器网络连接 王卓

TeamWork#3,Week5,Bing Input Method vs Sogou Input Method

现在电脑上用五笔的朋友估计越来越少了,好的拼音输入法也是难求.“必应输入法”的前身“英库拼音输入法”来自微软亚洲研究院的多项基础研究成果.最新的必应输入法不仅保留了英库拼音输入法的各项优势,还结合了必应的搜索体验,同时将输入法的应用平台开放化.搜狗输入法是搜狐公司推出的一款汉字拼音输入法软件,号称是当前网上最流行.用户好评率最高.功能最强大的拼音输入法.那么这两款输入法到底怎么样?好用吗?到底孰优孰劣?我们通过定性定量的总结分析,深入剖析这两款软件,对比了各个方面,总结出了这两款软件的强项和弱项

TeamWork#3,Week5,Scrum Meeting 11.15

经过最近一段时间的努力,我们调整了爬虫结构,并在继续进行爬虫开发,马上可以进行新爬虫与服务器连接的测试. 成员 已完成 待完成 彭林江 基本完成爬虫结构调整 新爬虫与服务器连接 郝倩 基本完成爬虫结构调整 新爬虫与服务器连接 高雅智 重定位人力资源和计划更新,就爬虫部分与同学讨论并尝试更换爬虫结构 管理任务进度,按计划重定位任务 牛强 因爬虫未完成所以没有进行相关测试工作 进行爬虫与服务器连接的测试 王卓 完成了UI初步设计 与实现者共同实现UI,修改问题 张明培育 完成了一部分UI 继续进一步

TeamWork#3,Week5,The First Meeting of Our Team

sixsix第一次会议记录 [会议时间]2014年10月23日星期四19:00-20:00 [会议形式]小组讨论 [会议地点]5号公寓 [会议主持]高雅智 [会议记录]张志浩 会议整体流程 一.签到 二.确定团队项目 三.确定成员分工 四.确定初步工作计划 五.注意事项 会议详细记录 一.签到 本次到会人员: 牛强,张明培育,高雅智,彭林江,张志浩,王卓,郝倩(全部到齐) 二.确定团队项目 我们拿到的是自选题目,所以首先要定下做什么.同学们提出了两个方案,一个是跨网站的购物车,一个是外卖优惠推送

Python笔记总结week5

Decorator:多层装饰器 #双层装饰器(用户登录,权限) #多层: 调用从最外层到最内层函数,返回值则从最内到最外层函数 USER_INFO = {} #USER_INFO['is_login'] = True #USER_INFO['user_type'] = 2 def check_login(func): def inner(*args,**kwargs): if USER_INFO.get('is_login',None): ret = func(*args,**kwargs) r