Java集合框架1——概述、ArrayList、LinkedList

        如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序。
                                                                                                                                            -------Java编程思想
为什么出现集合类?
        面向对象语言对事物的体现都是以对象的形式,
        所以为了方便对多个对象的操作,就对对象进行存储,
        集合就是存储对象最常用的一种方式

数组和集合都是容器,有何不同?
        数组虽然也可以存储对象,但长度是固定的,集合长度是可变的,
        数组中可以存储基本数据类型,但集合只能存储对象

集合类的特点

    集合只用于存储对象,集合的长度是可变的,集合可以存储
    不同类型的对象


Java集合类关系图


常用的集合容器
Collection
        |---List:元素是有序的,元素可以重复。因为该集合体系有索引。
                |---ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
                |---LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
                |---Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
        |---Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。
                |---HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
                |---TreeSet:底层数据结构是二叉树。可以对Set集合中的元素进行排序。


一些常用方法,以ArrayList为例

<pre name="code" class="java">/*
 * 1.add方法的参数类型是Object。以便于接收任意类型对象。
 * 2.集合中存储的都是对象的引用(地址)
 */
import java.util.ArrayList;
import java.util.Iterator;
	
public class CollectionDemo {
	public static void main(String[] args){
			method_1();
			method_2();
		}
	
		public static void method_1() {
			//创建一个集合容器,使用Collection接口的子类。ArrayList
			ArrayList a1 = new ArrayList();
			
			//添加元素
			a1.add("java01");
			a1.add("java02");
			a1.add("java03");
			a1.add("java04");
			
			System.out.println("size:" + a1.size())	;					//获取集合长度
			System.out.println("元原集合:" + a1);							//打印集合
			
			System.out.println("java03是否存在:" + a1.contains("java03")); //判断元素是否存在
			System.out.println("集合是否为空:" + a1.isEmpty());			//判断集合是否为空
			
			a1.remove("java02");							//删除元素
			System.out.println("删除后集合:" + a1);						//打印改变后的集合
			
			a1.clear(); 									//清空集合
			System.out.println("清空后集合:" + a1);
			
			System.out.println();
		}
	
		public static void method_2() {
			ArrayList a1 = new ArrayList();
			a1.add("java01");
			a1.add("java02");
			a1.add("java03");
			a1.add("java04");
			
			ArrayList a2 = new ArrayList();
			a2.add("java02");
			a2.add("java04");
			a2.add("java05");
			a2.add("java06");
			
			//a1.retainAll(a2);		//取交集,al1中只会保留和a2中相同的元素
			a1.removeAll(a2);		//和retainAll相反,移除和a2中相同的元素
			
			System.out.println("a1:" + a1);
			System.out.println("a2:" + a2);
			
			System.out.println();
		}
}
/*输出:
size:4
元原集合:[java01, java02, java03, java04]
java03是否存在:true
集合是否为空:false
删除后集合:[java01, java03, java04]
清空后集合:[]

a1:[java01, java03]
a2:[java02, java04, java05, java06]
*/
 
 
LinkedList一些特有方法
import java.util.LinkedList;

/*
LinkedList:特有方法:
addFirst();
addLast();

getFirst();
getLast();
获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException

removeFirst();
removeLast();
获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException


在JDK1.6出现了替代方法。

offerFirst();
offerLast();

peekFirst();
peekLast();
获取元素,但不删除元素。如果集合中没有元素,会返回null。

pollFirst();
pollLast();
获取元素,但是元素被删除。如果集合中没有元素,会返回null。
*/

class LinkedListDemo 
{
	public static void main(String[] args) 
	{
		LinkedList link = new LinkedList();

		link.addLast("java01");
		link.addLast("java02");
		link.addLast("java03");
		link.addLast("java04");

		System.out.println(link);	//[java01, java02, java03, java04]
		System.out.println(link.getFirst());	//java01
		System.out.println(link.getFirst());	//java01
		System.out.println(link.getLast());		//java04
		
		System.out.println(link.removeFirst());	//java01
		System.out.println(link.removeFirst());	//java02

		System.out.println("size="+link.size());//size=2
	}
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值