HashMap与ArrayList

Collection 接口

Collection 接口是在整个Java 类集中保存单值的最大操作父接口,里面每次操作的时候都只能保存一个对象的数据。

[if !supportLists]l  [endif]public boolean add(E e) :把给定的对象添加到当前集合中 。

[if !supportLists]l  [endif]public void clear():清空集合中所有的元素;

[if !supportLists]l  [endif]public boolean remove(E e) : 把给定的对象在当前集合中删除。

[if !supportLists]l  [endif]public boolean contains(E e) : 判断当前集合中是否包含给定的对象。

[if !supportLists]l  [endif]public boolean isEmpty() : 判断当前集合是否为空。

[if !supportLists]l  [endif]public int size() : 返回集合中元素的个数。

[if !supportLists]l  [endif]public Object[] toArray():把集合中的元素,存储到数组中


List 接口:

java.util.List 接口继承自 Collection 接口

在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行 存储的,在程序中可以通过索引来访问集合中的指定元素(元素的存入顺序和取出顺序一致)

[if !supportLists]l  [endif]public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。

[if !supportLists]l  [endif]public E get(int index) :返回集合中指定位置的元素。

[if !supportLists]l  [endif]public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。

[if !supportLists]l  [endif]public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新 前的元素

ArrayList(动态扩容):

优缺点:增删慢,查找快

刚创建的ArrayList()数组长度为零,当给它添加数值时,才变为容量为10的数组。每次扩容变为原来的1.5倍

当调用添加方法方法时(add())返回值永远为true

当使用foreach循环时,千万记得要在ArrayList()这里加泛型,错了三次了

遍历集合的方法

For循环,foreach,LinkedList,Iterator迭代器

LinkedList(链表结构):

优缺点:增删快,查找慢

[if !supportLists]l  [endif]public void addFirst(E e) :将指定元素插入此列表的开头。

[if !supportLists]l  [endif]public void addLast(E e) :将指定元素添加到此列表的结尾。

[if !supportLists]l  [endif]public E getFirst() :返回此列表的第一个元素。

[if !supportLists]l  [endif]public E getLast() :返回此列表的后一个元素。

[if !supportLists]l  [endif]public E removeFirst() :移除并返回此列表的第一个元素。

[if !supportLists]l  [endif]public E removeLast() :移除并返回此列表的后一个元素。

[if !supportLists]l  [endif]public E pop() :从此列表所表示的堆栈处弹出一个元素。

[if !supportLists]l  [endif]public void push(E e) :将元素推入此列表所表示的堆栈。

[if !supportLists]l  [endif]public boolean isEmpty() :如果列表不包含元素,则返回true

Vector类和ArrayList类的区别:

NO区别点ArrayListVector

1时间新的类,JDK1.2之后出的旧的类是在JDK1.0定义的

2性能性能较高,异步处理性能较低,同步处理

3输出支持Iterator、ListIterator输出不仅支持Iterator、ListIterator,还支持Enumeration

Iterator迭代器:

只要是碰到了集合,则输出的时候想都不想就使用 Iterator 进行输出。

ListIterator是Iterator的子:使用方法差不多,而且是同一个指针,如果要取出前一个元素,也要判断是否存在通过hasPrevious()

public Iterator iterator() : 获取集合对应的迭代器,用来遍历集合中的元素的。


迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取 出。这种取出方式专业术语称为迭代。

方法:不论是取出还是删除都需要hasNext()的指针指到含有元素的下标位置,起始位置在下标0上边

NO.方法名称类型描述

1Boolean hasNext()普通是否有下一个元素

2E next()普通取出内容

3Void remove()普通删除当前内容

Iterator<String>

iter = new all.iterator();创建对象

While(iter.hasNext()){判断是否有元素

String str = iter.next();取出元素

System.out,print(str+”、”)

}

以上的操作是 Iterator 接口使用最多的形式,也是一个标准的输出形式。

批量注释:CTRL+SHIFT+/

换行:/+回车

foreach:

用于迭代数组 或 集合(Collection)

语法:

For(数据类型 变量名:集合或数组名){要打印的}

Set接口:

Set 接口也是 Collection的子接口,与 List 接口最大的不同在于,Set 接口里面的内容是不允许重复的

Set 接口并没有对Collection 接口进行扩充,基本上还是与 Collection 接口保持一致。因为此接口没有 List 接口中定义 的 get(intindex)方法,所以无法使用循环进行输出

散列存放:HashSet:

HashSet 属于散列的存放类集,里面的内容是无序存放的。

TreeSet:

关于 TreeSet 的排序实现,如果是集合中对象是自定义的或者说其他系统定义的类没有实现 Comparable 接口,则不能实现 TreeSet 的排序,会报类型转换(转向 Comparable 接口)错误。 换句话说要添加到 TreeSet 集合中的对象的类型必须实现了 Comparable 接口

TreeSet 的集合因为借用了 Comparable 接口,同时可以去除重复值


Map:

Map集合存储的是一个个 键值对 数据(键不重复)

Map 本身是一个接口,所以一般会使用以下的几个子类:HashMap、TreeMap、Hashtable

哈希表(HashMap)概述:

散列表(哈希表):HashCode对散列表进行优化。

哈希表:对象数组+链表

先拿到对象的哈希值,将其与哈希表长度16取余,然后根据取余的数分布在0-15之间。

当有两个相同下标时,后来的会放在这个值下面,该值所在的下标位置变为链表。


哈希桶中的数据量大于   

8时,从链表转换为红黑二叉树,当哈希桶中的数据量减少到6时,从红黑二叉树转换为链表。

初始桶容量16

散列因子0.75 当这个数组中75%的桶装了数据时,对桶进行扩容,扩容的大小为原长度的二倍,同时下次过来的哈希值哈希值与32进行取余

HashMap/Hashtable/ConcurrentHashMap区别:

HaspMap(不保证存储顺序):线程不安全,效率高;(壮汉一起喝水)

Hasptable:线程安全,效率低;(壮汉排队喝)

ConcurrentHashMap:采用分段机制,保证线程安全,,效率又比较高(相同水桶排队喝,不同水桶一起喝)。

TreeMap:会自动计算排序。

LinkedHashMap:便利了HashMap同时保证顺序

HashMap与Hashstable的区别:

No区别点HashMapHashtable

1时间新的操作类旧的操作类

2性能异步处理,性能高同步处理性能低

3Null允许设置为null不许设置,否则将出现空指针

HashCode用属性来计算哈希值

File(常用的三种构造方法)

格式:

File

file = new File(“C://1.txt”);

1、file.createNewFile();//此方法创建文件

2、file.mkidr();//此方法创建文件夹

若无此文件,则创建

方法:

file.delete();//用于删除该对象的文件

getAbsolutePath();获取文件所在文件夹的路径名

getName();获取文件名称

getPath();获取文件路径

getParent();获取父的文件夹名,就是上层文件名

getParentFile();获取父文件夹对象

length();获取文件长度,按字节走

exists();判断文件是否存在

isDirectory();判断是否是文件夹

isFile();判断是否是文件

listFiles();获取文件夹下的所有文件对象,返回文件数组

mkdirs();创建一串文件夹,例如:c://ha//haha

renameTo();将文件存入新的文件夹,例如:c://ha

文件遍历:

格式:

File e = File(“e:\\”);//e盘目录下的文件

File[] files = e.listFiles();获取,并赋给files

ListFiles(files);传递给方法ListFiles()

Public static voidListFiles(File[] files){

       If(files!=null&& files.length>0){//判断文件是否是否为空

              for(Filefile:files){

              if(file.isFile()){//判断是否是文件

//判断文件后缀是否为要删除的

if(file.getName().ensWith(“.avi”)){

       //判断文件大小

if(file.length()>200*1024*1024){

                     file.delete();//删除文件

                     System.out.pirnt(“文件已删除”)

}

}

}else{

         File[] files2 = file.ListFiles();

ListFiles(files);//递归直到遍历所有文件

}

}

}

}

两参构造

File(File parent,String child)这里的parent指文件夹名称,child指文件名

File(String parent,String child)这里parent放的是子文件所在文件夹的路径名,如:c://haha

无参构造

File(String pathnames),里面放路径名

路径分隔符与名称分隔符:

PathSeparator; separator;

相对路径与绝对路径:

绝对路径:一个完整的路径,例如:c://a.txt

相对路径:在java代码中是相对于项目目路径,是不完整的便捷路径,在Java开发中常用,例如:a.txt

在java默认盘的路径下

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342