Java高级API-List和Set

API是什么

Application Programming Interface:应用程序编程接口;

  1. Java API是指Java标准类库提供的函数;
  2. Android API是指android SDK函数库;
  3. 网站API是指网站提供的接口,比如登录验证,信息查询,支付等;
  4. windows API是指windows操作系统的API.

Java集合框架

在这里插入图片描述

Collection-list-set三个接口的区别

  1. Collection接口:元素无序可重复;
    1.1 list子接口:元素有序可重复;(三种遍历方式,for,增强for,Iterator)
    1.2 set:元素无序不可重复;(不可以for遍历,可以增强for遍历,可以Iterator遍历,或者把元素赋给list对象再遍历,无get方法!!!)

ArrayList,LinkedList,HashSet三个实现类的区别

  1. ArrayList:以数组方式存储,按照下标遍历和随机访问元素比较方便;
  2. LinkedList:以链表方式存储,插入和删除元素比较方便;
  3. 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+'\''+'}';
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值