写在前面
微信小程序那边结束了,虽然做的…啥也不是,但终于还是结束,接下来我就可以花点时间看看感兴趣的东西了。我可以看看数据结构和算法呀,可以学学matlab呀,可以看看JS,JQ啊,可以看看bootstrap啊,看看一些书呀,学学高数…美滋滋。这周主要学了集合的一些知识,话不多说,直接上总结。
最近所学
2.2局部内部类
也称为方法内部类,即定义在方法中的内部类。
只能在外部类的方法中使用。
在jdk8以前,只能访问final变量。
2.3静态内部类
使用static修饰的内部类。
2.4匿名内部类
没有名字的内部类,因为此类只需要用使用一次,没有起名的必要。
例: 接口名 对象名 = new 接口名(){
匿名内部类
}
集合
一、简介
1.概念:简单的来说,集合就是一组数据,储存多个元素的数据结构。
2.存储结构
顺序存储
链式存储
顺序存储:将集合中的元素依次存放的某个区域中,称为顺序储存,在内存中分配的空间是连续的。
特性:访问效率高,插入和删除效率低。
链式存储:在内存中分配的空间不连续
分为:单向链式存储
双向链式存储
特性:插入和删除效率高,访问效率低。
3.集合类和接口
相关的API都在java.uitl
collction接口 对象集合
Map接口 键值对集合
Collection
List接口 ArratList LinkedList Vector
Set接口 HashSet TreeSet
Map
HashMap
Hashtable properties
二、List
特点:有序,可重复
实现类:ArrarList LinkedList Vector Stack
1.ArrayList
ArrayList实现了长度可变的数组
本质上就是使用数组实现的
存储结构:顺序结构
特点:访问元素时效率高,而插入或删除效率低,导致后面的元素都会移动。
2.Vector
Vector和ArrayList非常相似,都是使用数组实现的。
Vector:执行的效率低,影响性能。
同步的,线程安全的,方法基本被synchronized关键字修饰的
ArrayList
异步的,线程不安全的。
相比较Vector效率高。
遍历:for
foreach
Iterator
Enumeration枚举
Enumeration e = num.elements();
while(e.hasMoreElements()){
Integer num = e.next.Element();
sout(num+"\t");
}
Vector已过时,不建议使用。
常用方法
add() 添加元素
set() 修改
remove() 删除
get() 获取
size() 集合大小/长度 即元素个数
isEmpty() 是否为空
indexOf() 指定元素在集合中的索引
contains() 是否包含指定的元素
clear() 清空
toArray() 转为数组
asList 将数组转换为list
例 String[] arr = {"aaa","bbb","ccc"};
List<String> list2 = Arrays.asList(arr);
List<String> list3 = Arrays.asList("aaa","bbb");
遍历集合:for
foreach
使用Iterator迭代器,用于遍历集合中所有的元素的一种类型(只要实现了Iterator接口的类都可以使用迭代器进行遍历)
Iterator it = list.iterator();
while(it.hasNext()){
Integer num = it.next();
sout(num+"\t");
}
3.Stack 栈
Stack继承自Vector
特点:先进后出(First In Last Out)
常用方法:具有List的所有方法,同时具有操作栈的方法。
push() 入栈
pop() 出栈
peek() 查看栈顶的元素
4.LinkedList
需要频繁的插入和删除元素时可以使用LinkedList
数据结构:双向链式存储
特点:插入或删除元素时效率高
常用方法:具有List的所有方法,同时具有额外的方法
addFirst() 在首部添加
addLast() 在末尾添加
getFirst() 返回第一个
getLast() 返回最后一个
removeFirst() 删除第一个
removeLast() 删除最后一个
LinkedList是一种队列,实现Queue接口,所有实现Queue的类都是一个队列。
队列的特点:先进后出