JAVA API
什么是java api
常用的API
IO API
线程API
Socket API
集合API
集合框架的分类
以上三种集合的使用
集合的继承结构
List集合
List集合常用的API
集合空
set集合
Map集合
Map集合的应用场景广泛
***从map集合中取出集合的数据有三种方式:
集合套集合
集合迭代器
实现步骤
什么是java api
java api: application interface 应用程序接口
JAVA API是java开发团队实现做好的类库
类库:就是一些java类的集合,是一些功能的集合
JAVA API狭义的理解就是java的方法
经常会有这样的说法:
调用api方法/调用api
常用的API
String StringBuffer StringBuilder
封装类 Integer Float Double等八种
Calendar 日历类
Object类
Math类 BigDecimal BigInteger
IO API
所有的输入输出流,文件操作
线程API
Thread类和Runable接口
线程池
Socket API
网络线程:tcp/ip编程
Socket类
ServerSocket类
集合API
List集合
Set集合
Map集合
集合框架,把很多对象存储在一起.拥挤和的名称并同时使用集合的api,来操作集合中的数据
有了集合可以让数据的存储变得复杂,用对象可以存储不同类型的数据,把若干对象村塾在集合中
集合框架的分类
List集合/数据结构:线性,数据内容无序,但数据的位置是有序的,位置从0开始
Set集合/数据结构:非线性,数据的内容无序.位置也无序,但内容不能重合
Map集合/数据结构:键值对 若干键值对组织在一起的数据
以上三种集合的使用
集合的初始有一个固定的大小,随着往集合中添加数据,集合的空间不够了,那么集合会自动扩容
可以给集合存储若干不同类型的数据
给集合存储完元素后,就可以操作集合的数据
- List:
>查找:有位置下标的数据,查找快
>没有位置下标的数据,查找的速度不一定
>增加:增加到集合的末尾,追加快,增加到集合的某一个位置,慢
>删除:有位置下标删除快,但数据移动慢
>修改:同查找
- Set
>查找:查找慢
>增加:慢,保证集合中的数据没有重复
>删除:先找后删,慢
>修改:慢
- Map
>查找:有key的数据查找快,没有key的数据查找慢(key表示一种标记)
>增加:慢,因为要保证所有的key不能重复
>删除:有key的删除快
>修改:
集合的继承结构
Collection接口:
List接口:
ArrayList类ArrayList implement List
LinkedList类LinkedList implement List
Set接口
HashMap类HashMap implement Map
HashTable类HashTableimplementMap
List集合
List是一个接口,接口中定义了规范,要使用这些接口就必须实现这个接口,并给接口的方法补上方法体
ArrayList类和LinkedList类都是List接口的子实现
ArrayList类有具体的下标,通过下标查询速度快,不适合做增和删.更适合做位置下标.
LinkedList类不适合做查询,更适合做增和删,适合做链表
List集合常用的API
boolean add(Object) 给集合添加对象
int size() 获取集合中的元素的个数
Object get(int) 从集合中获取指定下标位置的元素
void clear() 清除集合中所有的元素
boolean isEmpty()判断集合是否为空,指的是集合内容为空
List subList(int,int) 从起始索引到中止索引,包括头,不包括尾
void remove(int) 删除指定索引位置的对象
void remove(Object) 删除指定的对象
void remove(Collection) 删除集合中的一个子集
…等
集合空
集合对象为null 空 说明堆空间为空
集合对象不为null,但集合内容为空 即size()
set集合
set集合中不能有重复的元素出现,所有的set集合中的元素,只能唯一,且没有顺序,能存储null,但线程不安全
HashSet集合越小,遍历的速度和效率就越好
TreeSet集合是要求集合中的数据排序,要求要存储的元素对象对应的类必须实现Comparable接口
Map集合
若干键值对数据组成的集合
map集合中的所有的key(值)也是一个集合,是一个set集合,说明key不能重复
map集合中所有的value(值)也是一个集合,是一个Collection集合,集合中的每一个元素是由key和value组成的,而value可以是Collection集合或map集合皆可,即集合套集合
Map接口有两个子实现:HashMap和HashTable
HashMap可以存储null,线程不安全,.异步
HashTable不可以存储null,线程安全,同步
Map集合的应用场景广泛
原因:前提是能确定key值,就一定会快速的获取key对应的对象,很多的框架中的数据都是用Map集合存储的
想Spring框架,Springmvc框架,Strutcts框架,mybatis框架,Tomcat框架,redis框架等…
map的集合只能通过put方式添加集合元素(键值对),存储完后,会把所有的key构成一个Set集合,此Set集合只能读取,不能添加,同理所有的value组成的集合只能读取,不能添加
***从map集合中取出集合的数据有三种方式:
一次取出一个键值对
县取出所有的key然后循环遍历key,根据key来取出value
直接取出所有的value,进行遍历,找到合适的value即可
集合套集合
解决了更复杂的数据结构的问题
例:
ArrayListall=new ArrayList();
ArrayListall=new ArrayList();
ArrayList>> all=new ArrayList>>();
HashMapall=new HashMap();
HashMap> all=new HashMap>();
集合迭代器
迭代 等价理解为 循环 等价理解为 遍历
集合中的迭代,主要用途就是遍历集合中的元素
把list集合,和set集合,map集合都转换成结合的迭代
集合迭代的本质,就是把所有的集合的遍历方式转换成迭代器这一种遍历方式
实现步骤
List集合转换成迭代器集合,用迭代器api方法来迭代数据
Set集合转换成迭代器集合,用迭代器api方法来迭代数据
Map集合转换成迭代器集合,用迭代器api方法来迭代数据
public class IteratorService {
public List getPerson_List(){
/**
* 获取一个List对象的集合
*/
List list=new ArrayList();
Student stu1=new Student("张三",20,"S001");
Student stu2=new Student("李四",21,"S002");
Student stu3=new Student("王五",22,"S003");
Student stu4=new Student("张五",20,"S001");
Teacher tea1=new Teacher("赵六",23,10000);
Teacher tea2=new Teacher("田七",30,20000);
list.add(stu1);
list.add(stu2);
list.add(stu3);
list.add(stu4);
list.add(tea1);
list.add(tea2);
return list;
}
public Set getPerson_Set(){
/**
* 获取一个Set对象的集合
*/
Set set=new HashSet();
Student stu1=new Student("张三",20,"S001");
Student stu2=new Student("李四",21,"S002");
Student stu3=new Student("王五",22,"S003");
Student stu4=new Student("张五",20,"S001");
Teacher tea1=new Teacher("赵六",23,10000);
Teacher tea2=new Teacher("田七",30,20000);
set.add(stu1);
set.add(stu2);
set.add(stu3);
set.add(stu4);
set.add(tea1);
set.add(tea2);
return set;
}
public Map getPerson_Map(){
/**
* 获取一个Map对象的集合
*/
Map map=new HashMap();
Student stu1=new Student("张三",20,"S001");
Student stu2=new Student("李四",21,"S002");
Student stu3=new Student("王五",22,"S003");
Student stu4=new Student("张五",20,"S001");
Teacher tea1=new Teacher("赵六",23,10000);
Teacher tea2=new Teacher("田七",30,20000);
map.put(stu1.getName(), stu1);
map.put(stu2.getName(), stu2);
map.put(stu3.getName(), stu3);
map.put(stu4.getName(), stu4);
map.put(tea1.getName(), tea1);
map.put(tea2.getName(), tea2);
return map;
}
/**
* 把List集合转换成iterator迭代器
* 用迭代器的方式迭代数据
*/
public void iterator_List(){
List list=this.getPerson_List();
Iterator it=list.iterator();//把List集合转化成迭代器集合
while(it.hasNext()){
/**
*
* it.next(),只是判断是否有下一个数据
* 如果有下一个数据,就取出下一个数据
*/
Person p=it.next();
//继续根据具体的业务逻辑去获取p对象中的数据
CommonPerson cp=(CommonPerson)p;
System.out.println("name="+cp.getName()+" age="+cp.getAge());
}
}
/**
* 把Set集合转换成iterator迭代器
* 用迭代器的方式迭代数据
*/
public void iterator_Set(){
Set set=this.getPerson_Set();
Iterator it=set.iterator();//把Set集合转化成迭代器集合
while(it.hasNext()){
/**
*
* it.next(),只是判断是否有下一个数据
* 如果有下一个数据,就取出下一个数据
*/
Person p=it.next();
//继续根据具体的业务逻辑去获取p对象中的数据
CommonPerson cp=(CommonPerson)p;
System.out.println("name="+cp.getName()+" age="+cp.getAge());
}
}
/**
* 把Map集合转换成iterator迭代器
* 用迭代器的方式迭代数据
*/
public void iterator_Map(){
Map map=this.getPerson_Map();
Iterator it=map.values().iterator();//把map集合的所有的value转化成迭代器集合
while(it.hasNext()){
/**
*
* it.next(),只是判断是否有下一个数据
* 如果有下一个数据,就取出下一个数据
*/
Person p=it.next();
//继续根据具体的业务逻辑去获取p对象中的数据
CommonPerson cp=(CommonPerson)p;
System.out.println("name="+cp.getName()+" age="+cp.getAge());
}
}
}