导图社区 javaAPI框架总结汇总分享
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程
网店详情页排版方法分享~包括中心页面组成,优质详情必备,详情页的排版参考方法。感兴趣的小伙伴可以看看哦~
喷绘色彩基础培训方案,内容涵盖色彩基础,喷绘写真。框架清晰,内容丰富,希望对小伙伴有所帮助哦~
酒窖营销计划方案,包括结果目标,过程目标。框架清晰,内容丰富,有需要的小伙伴可以看看哦~ 可供大家参考,借鉴,交流。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
javaAPI框架总结汇总分享
对象数组和集合的概述
对象数组:
数组和集合存储引用数据类型,存的都是地址值
集合的由来:
数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义,太麻烦,java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少
集合和数组的区别:
1、存储类型不同
数组既可以存储基本数据类型,又可以存储引用数据类型, 基本数据类型存储的是值,引用数据类型存储的是地址值
集合只能存储引用数据类型(对象)集合中也可以存储基本 数据类型,但是在存储的时候会自动装箱变成对象
2、长度不同
数组长度是固定的,不能自动增长
集合的长度的是可变的,可以根据元素的增加而增长
什么时候用集合,数组?
元素个数固定用数组,不固定用集合
集合的框架图:
单列集合的顶层接口Collection
List体系
特点:有序(元素存取的顺序是一致的),可重复
ArrayList:底层的数据结构是数组。
Vector:底层的数据结构是数组。
LinkedList:底层的数据结构是链表。
Set体系
特点:无序,唯一
HashSet:底层的数据结构是哈希表。
TreeSet:底层的数据结构是二叉树。
双列集合的顶层接口Map
HashMap:底层的数据结构是哈希表。
TreeMap:底层的数据结构是二叉树。
面试题:
字符串,集合,数组分别怎么获取长度?
字符串:length()方法
集合:size()方法
数组:length属性
Collection集合
Collection中的方法:
boolean add(Object obj); 添加
boolean remove(Object obj); 移除
boolean contains(Object obj);是否包含给定的元素
boolean isEmpty();判断集合是否为空
int size();获取集合中元素的个数。
void clear();清空集合(相当于把集合中的元素都删掉)
Collection中带All功能的方法(了解):
boolean addAll(Collection c); 添加一个集合中的元素到另一个集合中
boolean removeAll(Collection c);删除两个集合中的交集
boolean containsAll(Collection c);判断一个集合是否包含另一个集合
boolean retainAll(Collection c); 判断两个集合是否有交集,把交集 赋值给调用者如果调用者不改变,返回值是false,如果改变,结果是true
集合的遍历方式:
1、转数组遍历:
public Object[] toArray(); 把集合对象转成数组对象
2、迭代器(Iterator)
思路(重点掌握):
1、获取迭代器对象。
public Iterator iterator();Collection接口中的方法根据集合对象获取到迭代器对象
2、判断迭代器中是否有元素。
public boolean hasNext(); Iterator接口里边的,判断迭代器中是否有元素
3、有的话,就可以来获取到这个元素。
public Object next(); Iterator接口里边的,获取集合中的元素
迭代器的原理(了解)
迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么就需要在每一个类中定义hasNext()和next()方法,这样做是可以的,但是会让整个集合体系过于臃肿,迭代器是将这样的方法向上抽取出接口,然后在每个类的内部,定义自己迭代方式,这样做的好处有二,第一规定了整个集合体系的遍历方式都是hasNext()和next()方法,第二,代码有底层内部实现,使用者不用管怎么实现的,会用即可
List体系概述
List集合的特有功能概述:
void add(int index, Object obj); 在指定位置添加指定元素
Object remove(int index);移除集合中指定位置的元素,并将被移除的元素返回
Object get(int index);根据索引,返回对应位置的元素
Object set(int index,Object obj);修改指定位置的元素
List体系的独有遍历方式:
get()和size()方法结合使用
并发修改异常:ConcurrentModificationException
产生原因:
用普通的迭代器遍历集合的时候,同时对集合中 的元素进行了添加
解决方案:
用列表迭代器(ListIterator)来遍历,并且 通过列表迭代器的add()方法来添加元素
ListIterator列表迭代器:
public boolean hasNext(); 判断集合中是否有下一个元素(正向遍历)
public Object next(); 返回下一个元素
public boolean hasPrevious(); 判断集合中是否有上一个元素(逆向遍历)
public Object previous();返回上一个元素
注意事项:
进行逆向遍历之前,必须先对集合进行 正向遍历,否则结果可能不是我们想要的
Vector类(了解):
有些企业中的项目,如果是早起研发的,那么可能使用的 集合是Vector,咱们能看懂他们写的是什么意思就行了。
数据结构(数组和链表):
数组:查询快,修改快,增删慢。
因为每个元素都有编号(索引),并且编号从0开始的
链表:查询慢,修改慢,增删快。
List三个儿子的特点:
ArrayList:
底层数据结构是数组,查询快,增删慢。线程不安全,效率高。
Vector:
底层数据结构是数组,查询快,增删慢。线程安全,效率低。
LinkedList:
底层数据结构是链表。查询慢,增删快。线程不安全,效率高。
List三个儿子的区别:
1、ArrayList和Vector的区别
ArrayList是线程不安全的,效率高
Vector是线程安全的,效率低
共同点:都是数组实现的
2、ArrayList和LinkedList的区别
ArrayList底层是数组结构的,查询和修改快,增和删比较慢
LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
共同点:都是线程不安全的效率高
什么时候使用List的哪个儿子
查询多:ArrayList
增删多:LinkedList
都多,或者你不知道你不知道用谁: ArrayList