集合框架

 

/*
集合类  存储对象
数组是固定长度,集合石可变长度。
数组必须相同类型,集合只要是对象就可以。

集合框架     每一个容器对数据的存储结构不同(数据结构)
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()

  


转载于:https://www.cnblogs.com/weimingtfm/archive/2012/03/27/2420052.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值