/*
集合类 存储对象
数组是固定长度,集合石可变长度。
数组必须相同类型,集合只要是对象就可以。
集合框架 每一个容器对数据的存储结构不同(数据结构)
Collection
List ArrayList LinkedList Vector
Set HashSet TreeSet
*/
import java.util.*;
class demo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); //集合中存储的都是对象的引用(地址)
//增
al.add("01");//字符串是对象 add(object obj) 可接受任意类型对象。
al.add("02");
al.add("03");
al.add("04");
//查
al.size(); //集合长度
al.contains("04"); //是否存在04
al.isEmpty();//是否为空
System.out.println(al); //打印
//删
al.remove("03");
al.clear(); //清空
al.retainAll(al2); //取交集,al会保存与al2的交集。
}
}
/*
List 元素是有序的,元素可以重复,该集合体系有索引。
凡是可以操作角标的方法都是该体系特有的方法。
增
add(index,element);
addAll(index,Collection);
删
remove(index);
改
set(index,element);
查
get(index);
subList(from,to);
listIterator();
Set 元素是无序的,元素不可以重复,该集合体系没有索引。
*/
class demo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
//增
al.add("01");
al.add("02");
al.add("03");
//指定位置 增加
al.add(1,"java");
//指定位置 删除
al.remove(2);
//修改元素
al.set(2,"ccc");
//获取元素
al.get(1);
//获取所有元素 遍历
for (int x=0;x<al.size() ;x++ )
{
System.out.println(al.get(x));
}
Iterator it = al.iterator();
while(it.hasNext()) //有元素就返回 true
{
it.next();
}
//集合 动作不同,但是 判断和取出是一样的。
// Iterator 取出内部类对象
//通过indexof获取对象的位置。
al.indexof("03");
List sub = al.subList(1,3); //1~3,不包含3
错误示例:
//在迭代过程中,准备添加或者删除元素
Iterator it = al.iterator();
while(it.hasNext()) //有元素就返回 true
{
object obj = it.next();
if(obj.equals("02")) //错误 并发同时访问 有安全隐患
{
al.add()
}
}
常用代码:
/*
List集合特有的迭代器,ListIterator是Iterator的子接口。
在迭代时,不可以通过集合的对象操作集合中的元素,因为会发生异常。
Iterator 只能对 元素 进行 判断 取出 删除。
ListIterator功能更多。
*/
ListIterator li = al.ListIterator();
while(li.hasNext())
{
object obj = li.next();
if(obj.equals("02"))
{
li.add("09");//在02后面添加09
li.set("100");//把02修改成100
}
}
ArrayList 底层的数据结构使用的是数组结构。查询速度快,但是增删稍慢。
线程不同步 可变长度数组
LinkedList 链表数据结构 查询速度慢,但是增删快。
Vector 底层是数组数据结构 线程同步。增删查都慢。(被ArrayList取代)
/*
LinkedList 特有方法:
addFirst 在前面插入
addLast 在后面插入
getFirst(); 获取最前面的
getLast(); 获取最后面的
如果集合中没有元素,会出现nosuchElementExcption
size(); 获取元素个数
removeFirst 移除第一个元素,并输出被删的元素
removeLast 移除最后一个元素,并输出被删的元素
如果集合中没有元素,会出现nosuchElementExcption
------------------------------------------------------------------------------
在JDK1.6出现了替代方法,如果集合中没有元素,会出现null
offerFirst()
offerLast();
peekFirst();
peekLast();
pollFirst();
pollFirst();
*/
import java.util.*;
class LinkedListDemo
{
public static void main(String[] args)
{
LinkedList link = new LinkedList();
link.add("苹果");
link.add("梨子");
link.add("桃子");
while(!link.isEmpty())
{
link.removeFirst();
}
}
}
Person p = (Person)it.next(); //obj
p.getName()
p.getAge()