API是什么
Application Programming Interface:应用程序编程接口;
- Java API是指Java标准类库提供的函数;
- Android API是指android SDK函数库;
- 网站API是指网站提供的接口,比如登录验证,信息查询,支付等;
- windows API是指windows操作系统的API.
Java集合框架
Collection-list-set三个接口的区别
- Collection接口:元素无序可重复;
1.1 list子接口:元素有序可重复;(三种遍历方式,for,增强for,Iterator)
1.2 set:元素无序不可重复;(不可以for遍历,可以增强for遍历,可以Iterator遍历,或者把元素赋给list对象再遍历,无get方法!!!)
ArrayList,LinkedList,HashSet三个实现类的区别
- ArrayList:以数组方式存储,按照下标遍历和随机访问元素比较方便;
- LinkedList:以链表方式存储,插入和删除元素比较方便;
- HashSet:以HashMap的key值得到的Hash码来存储,以此确保唯一性(理论上)
Iterator
作用:集合中的数据存储方式(数据类型)不一样,所以取出方式也不一样,Iterator则是一个统一取出元素的方式;
Iterator迭代器,是java.lang.Iterable接口,被Collection继承;
iterator方法返回的是Iterator的一个实现类!!!
boolean hasNext()方法,如果仍有元素可以迭代,即集合中还有没有元素,有返回true,否则返回false;
Next()方法,返回下一个元素;
直接用数组实现元素的存储:
// 数组实现可变数组的存储
import java.util.Arrays;
public class Test{
public static void main(String[]args){
String[] news=new String[10];
int size=0;
for(;size<news.length;){
if(news[size]==null){//插入数组元素时,先判断是否为空,遇到空值再插入;
news[size]="abc";
size++;break;
}
}
//数组空间足够的话,截取前面的size个
String[] actual=Arrays.copyOf(news,size);
//元素数量不够则扩容,长度加10
String[] news2=Arrays.copyOf(news,news.length+10);
}
}
ArrayList的使用:
// ArrayList的使用
import java.util.ArrayList;//直接使用import java.util.*;就可以了
import java.util.Iterator;
import java.util.List;
public class TestArrayList{
public static void main(String[]args){
ArrayList news=new ArrayList();//申明对象并分配空间;
news.add("新冠疫情");//对象news调用ArrayList类的add方法;
news.add("头条汪峰");
System.out.print(news);//打印结果不是对象news的地址,所以ArrayList一定重写了toString方法;
//以下为三种遍历方式:
//for i遍历
for(int i=0;i<news.size();i++){
System.out.print(news.get(i));//对象news调用了get(i)方法,提取第i+1个元素
//增强for遍历
for(Object n:news){//为啥是Object类???输入ArrayList报错!!!
System.out.println(n);
//迭代器iterator遍历
Iterator iter=news.iterator();
while(iter.hasNext()){//Object.hasNext()判断是否存在下一个要访问的元素,返回boolean值;
System.out.println(iter.next());//Object.next()返回要访问的下一个元素
}
}
}
}
}
LinkedList的使用:
// LinkedList
import java.util.LinkedList;
public class TestLinkedList{
public static void main(String[]args){
LinkedList list=new LinkedList();
list.add("abc");
list.add("def");
list.add("123");
list.add(new Title(1,"链表结构","罗鑫");//可以放不同的类型,包括对象(不过该对象需要重写toString()方法,否则打印出地址了)
System.out.println(list);
}
}
HashSet的使用:
// HashSet
import java.util.HashSet;
import java.util.Iterator;
public class TestHashSet{
public static void main(String[]args){
HashSet set=new HashSet();
set.add("abc");
set.add(123);
set.add("123");
set.add(123.0);
set.remove(2);//移除第3个元素;
//增强for遍历:
for(Object n:set){
System.out.println(n);
}
//Iterator迭代器遍历:
Iterator it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//将元素赋给list然后再遍历:
List ls=new ArrayList(set);
System.out.println(ls);
}
}
重写toString方法:
// 如果print(对象名)的话,会直接得到一个地址;如果重写toString方法的话,可以打印出对象的属性值;
public class Title{
private int id;
private String titleName;
private String creater;
public String toString(){
return "Title{"+"id="+id+",titleName='"+titleName+'\''+"
,creater='"+creater+'\''+'}';
}
}