java知识点---集合+文件类+输入输出流

一、集合框架
集合框架是一个代表操作集合的统一架构。所有的集合框架都包含以下几点:
接口:表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而达到“多态”。在面向对象编程语言中,接口通常用来形成规范。
实现类:集合接口的具体实现,是重用性很高的数据结构。
算法:用来根据需要对实体类中的对象进行计算,比如查找,排序。
同一种算法可以对不同的集合实现类进行计算,这是利用了“多态”。
重用性很高。
Collections类常用方法总结
提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

Java集合框架主要由Collection和Map两个根接口及其子接口、实现类组成。
二、集合框架示意图

java知识点---集合+文件类+输入输出流

java知识点---集合+文件类+输入输出流
三、具体区别
集合框架实现类底层原理:https://www.cnblogs.com/shangxinfeng/p/6685082.html
3.1 ArrayList 与LinkedList 区别
都是List的实现类,主要区别是底层的数据结构不同
ArrayList 相当于一个动态数组 ,需要随机访问列表中的元素,ArrayList的性能更高
LinkedList 链表式数据结构,当需要频繁的插入,删除列表中的元素时,性能高
3.2 Hashset与treeSet区别
都是set的实现类,保证元素的不重复
HashSet集合中允许有null元素,TreeSet集合中不允许有null元素。在添加的时候如果添加null,则会抛出NullPointerException异常。
HashSet是一个无序的集合,基于HashMap实现,底层原理是哈希链表
TreeSet是一个有序的集合,基于TreeMap实现。对于自定义的对象支持2种排序方式
自然排序 :要在自定义类中实现Comparerable接口 ,并且重写compareTo方法指明按照自定义类的哪个属性进行排
比较器排序:在自定义类中实现Comparetor接口,重写Comparator接口中的Compare方法
treeset排序例子:https://blog.csdn.net/xiaofei__/article/details/53138681
3.3HashMap和TreeMap底层实现原理
HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的,如果定位到的数组位置不含链表(当前entry的next指向null),那么对于查找,添加等操作很快,仅需一次寻址即可;如果定位到的数组包含链表,对于添加操作,其时间复杂度为O(n),首先遍历链表,存在即覆盖,否则新增;对于查找操作来讲,仍需遍历链表,然后通过key对象的equals方法逐一比对查找。所以,性能考虑,HashMap中的链表出现越少,性能才会越好。
HashMap底层原理:https://www.cnblogs.com/chengxiao/p/6059914.html

TreeMap底层通过红黑树(Red-Black tree)实现,也就意味着containsKey(), get(), put(), remove()都有着log(n)的时间复杂度。
红黑树是一种近似平衡的二叉查找树,它能够确保任何一个节点的左右子树的高度差不会超过二者中较低那个的一陪。具体来说,红黑树是满足如下条件的二叉查找树(binary search tree):
每个节点要么是红色,要么是黑色。
根节点必须是黑色
红色节点不能连续(也即是,红色节点的孩子和父亲都不能是红色)。
对于每个节点,从该点至null(树尾端)的任何路径,都含有相同个数的黑色节点。
TreeMap底层原理实现:https://blog.csdn.net/cyywxy/article/details/81151104
在树的结构发生改变时(插入或者删除操作),往往会破坏上述条件3或条件4,需要通过调整,即红黑树左旋转、右旋转使得查找树重新满足红黑树的约束条件。
四、Collection定义了集合框架的共性功能
4.1 添加
add(e)
addAll(collection)
4.2 删除
remove(e)
removeAll(collection)
clear()
4.3 判断
contains(e)
isEmpty()
5、定义了一组对象和它的子类需要实现的 15 个方法:
图片: java知识点---集合+文件类+输入输出流
注意:集合的遍历还有普通的方法,可以找到每一个对象的相应的属性
图片:
java知识点---集合+文件类+输入输出流
五、List常用方法

void add(index,element);
boolean addAll(index,Collection);

remove(index);

set(index,element); 在索引为index位置的元素更改为element元素

get(index):
subList(from,to); 返回从索引fromIndex到toIndex的元素集合,包左不包右
listIterator();
int indexOf(obj): 获取指定元素的位置。
ListIterator listIterator();

六、Set集合 去重和比较方法
treeset常用方法:https://www.cnblogs.com/pony1223/p/7907173.html
1、hashset具有去重功能

图片: https://uploader.shimo.im/f/PYmaqYUqz7QaUJrb.png

打印结果是 a b f d,实现去重且无顺序

2、TreeSet用来排序
图片: https://uploader.shimo.im/f/6vn0BTPKadEtUzVP.png
七、Map常用方法
1,添加。
put(K key, V value)
putAll(Map<? extends K,? extends V> m)
2,删除。
clear()
remove(Object key)
3,判断。
containsValue(Object value)
containsKey(Object key)
isEmpty()
4,获取。
get(Object key) 得到的值是 value 
size()
values()
entrySet()
keySet()
getKey()
getValue( )

七-1、如何遍历set集合??
遍历set集合的key??
使用 map.keyset()方法就能遍历set 集合所有的key值
图片:
java知识点---集合+文件类+输入输出流
如何遍历map里面所有的key和value??
方法一 如下:
图片:
java知识点---集合+文件类+输入输出流
方法二 如下:
图片:
java知识点---集合+文件类+输入输出流
最为推荐的一种方法:
图片:
java知识点---集合+文件类+输入输出流
八、Demo如下:
通过设置键值对。 Map<String,AdCampaign> campaignMap1 = new HashMap<>(); 使得计划id和计划一一匹配,之后根据键值对来找到计划id对应的计划名称,之后再set到返回给前端的对象里面
图片:
java知识点---集合+文件类+输入输出流
除法之前要先进行判断,判断分母是否为0,如果为0那么直接定义结果为0,否则做除法,要使用逻辑判断if. else
图片:
java知识点---集合+文件类+输入输出流
BigDecimal、日期工具类、字符串工具类、集合工具类

今日知识点:
java基础:
1、==对于基本数据类型比较的是 数值大小,对于字符串比较的是 A B的内存地址是否相同
图片: https://uploader.shimo.im/f/8ty1sQzr50EAXbag.png
2、equals方法不能作用于基本数据类型的变量

图片: https://uploader.shimo.im/f/E6bwEZgte18rgCo1.png

图片: https://uploader.shimo.im/f/aPU185pC5uQcnRiO.png

九、文件类

图片:
java知识点---集合+文件类+输入输出流
十、输入输出流
java知识点---集合+文件类+输入输出流

图片: https://uploader.shimo.im/f/RZrWlSRkSz8FrCUK.png
FileOutputStream outputStream = new FileOutputStream(“a.txt”);
创建一个输出的文件,然后可以往这个文件里来写
使用完了流,要及时关闭,防止占用内存 outputStream.close();
demo: 字节流复制文件
利用输入流读取一个文件里的字节,再利用输出流将读取到的字节写出到另一个文件中(不存在会自动创建)
图片: https://uploader.shimo.im/f/3reuqSNtKawSVtlB.png
注:复制文本、图片、mp3、视频等的方式一样。
字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果。
图片: https://uploader.shimo.im/f/TvJu12QY25U2QCq7.png
十一、java中关于日期格式的设置
图片: https://uploader.shimo.im/f/nt0khsuvGloUBfrd.png
设置成规定的日期格式

设置货币格式,要保留到小数点后几位有效数字
如果该对象的属性为空,那么可以使用构造函数新建为0
图片: https://uploader.shimo.im/f/zehKd3hsSJYZzmVj.png
十二、字符串或者对象的比较用什么函数?
图片: https://uploader.shimo.im/f/1A7CF5EvPcccfXYk.png
使用equals()函数来比较,不要使用==,不规范

注意传参格式可以新建一个new arraylist的集合
图片: https://uploader.shimo.im/f/havh4mPhYU0J9OEm.png

十三、java动态代理
https://www.cnblogs.com/xiaoluo501395377/p/3383130.html
十四、 优化for循环
https://blog.csdn.net/csdn_aiyang/article/details/75162134

上一篇:[LeetCode] Find the Duplicate Number 寻找重复数


下一篇:javascript – wp.media未定义使用WordPress Media Uploader