类集

主要介绍的内容:

1、类集的主要作用

2、Collection、List、Set接口的作用及相关的子类

3、Map的作用及相关子类

4、Object类的作用

5、掌握泛型在整个Java类集的作用

6、掌握属性文件的操作


一、类集设置的目的(重点哦)

类集: 一系列动态对象数组。

对象数组有哪些问题?普通的对象数组的最大问题在于数组中的元素个数是固定的,不能动态扩充大小,所以最早的时候可以通过链表实现一个动态对象数组。但是这样做毕竟太复杂了,所以在Java中为了方便用户操作各个数据结构,所以引入了类集的概念,有时候就可以把类集成为JAVA对数据结构的实现。

在整个类集中,这个概念是从JDK1.2(Java2)之后才正式引入的,最早也提供了很多的操作类,但是并没有完整的提出类集的完整概念。

类集中最大的几个操作接口: Collection、Map、Iterator 这三个接口为以后要使用的最重点的接口。

所有的类集操作的接口或类都在java.util包中


Java类集结构图:




二、Collection接口(重点)

Collection接口是在整个Java类集中保存单值的最大操作父类接口,里面每次操作的时候都只能保存一个对象数据。

此接口定义在java.ui包中。

此接口定义如下:

public interface Collection<E> extends Iterable<E>

此接口使用了泛型技术,在JDK1.5之后为了使类集操作的更加安全,所以引入了泛型。

此接口的常用方法如下所示。


No.方法名称类型描述
1public boolean add(E e)   普通                    向集合中插入一个元素           
2        public boolean addAll(Collection<? extends E> c)           普通   向集合中插入一组元素
3public void clear()普通清空集合中的元素
4public boolean contains(Object o)普通查找一个元素是否存在
5public boolean containsAll(Collection<?> c)普通查找一组元素是否存在
6public boolean isEmpty普通判断集合是否为空
7public Iterator<E> iterator()普通为Iterator接口实例化
8public  boolean remove(Object o)普通从集合中删除一个对象
9 boolean removeAll(Collection<?> c)普通从集合中删除一组对象
10boolean retainAll(Collection<?> c)普通判断是否没有指定的集合
11public int size()普通求出集合中元素的个数
12public Object[ ] toArray()  普通以对象数组的形式返回集合中的全部内容
13<T> T[ ] toArray(T[ ] a)普通指定操作的泛型类型,并把内容返回
14public boolean equals(Object o)普通从Object类中覆写而来
15public int hashCode()普通从Object类中覆写而来

本接口中一共定义了15个方法,那么此接口的全部子类或子接口就将全部继承以上接口中的方法。

但是,在开发中不会直接使用Collection接口。而使用器操作的子接口:List、Set。

之所以有这样的明文规定,也是在JDK1.2之后才有的。一开始在EJB中的最早模型中全部都是使用Collection操作的,所以很早之前开发代码都是以Collection为准,但是后来为了更加清楚的区分,集合中是否允许有重复元素所以SUN在其开源项目——PetShop(宠物商店)中就开始推广List和Set的使用。


三、List接口(重点)


在整个集合中List是Collection的子接口,里面所有的内容都是允许重复的。

List子接口的定义:

public interface List<E> extends Collection<E>

此接口上依然使用了泛型技术。此接口对于Collection接口来讲有如下的扩充方法:

No.1     方法名称         类型                               描述                                    
1public void add(int index, E elem ent)普通在指定位置处增加元素
2     boolean addAll(int index, Collection<? extends E> c)    普通在指定位置处增加一组元素
3public E get(int index)普通根据索引位置取出每一个元素
4public  int indexOf(Object o)普通根据对象查找指定位置,找不到返回-1
5public int lastIndexOf(Object o)普通从后面向前查找位置,找不到返回-1
6public ListIterator<E> listIterator()普通返回ListIterator接口的实例
7public ListIterator<E> listIterator(int index)普通      返回从指定位置的ListIterator接口的实例       
8public E remove(int index)普通删除指定位置的内容
9public E set(int index,E elem ent)普通修改指定指定位置的内容
10List<E> subList(int fromIndex, int toIndex)普通返回子子集合



四、新的子类:ArrayList (重点)

ArrayList是List接口的子类,此类的定义如下:

public class ArrayList<E> extends AbstractList<E> implements List<E>,RandomAccess,Cloneable,Serializable

   此类继承了 AbstractList类。AbstractList是List接口的子类。AbstractList是个抽象类,适配器设计模式。

package 类集;

import java.util.ArrayList;
import java.util.List;

public class ArrayListDemo {
	public static void main(String args[]){
		//实例化List对象,并且指定泛型类型
		List<String> all = new ArrayList<String>();
		//增加内容,此方法从Collection接口继承而来
		all.add("hello");
		//增加内容,此方法是List接口单独定义的
		all.add(0, "LXH");
		//增加内容,此方法是从Collection接口继承而来的
		all.add("world");
		all.add("你好");
		all.add("世界");
		//打印all对象调用toString()方法
		System.out.println(all);
		//根据索引删除内容,此方法是List接口单独定义的
		all.remove(0);
		System.out.println(all);
		// 删除指定的对象
		all.remove("world");
		System.out.println(all);
		
		System.out.print("集合中的内容是:");
		for(String str:all){
			System.out.print(str+"、");
		}
		
	}
	
}

//结果是:
//[LXH, hello, world, 你好, 世界]
//[hello, world, 你好, 世界]
//[hello, 你好, 世界]
//集合中的内容是:hello、你好、世界、

五、旧的子类:Vector(重点)

与ArrayList一样,Vector本身也属于List接口的子类,此类的定义如下:

public class Vector<E> extends AbstractList<E> implement List<E>,RandomAccess,Cloneable,Serializable

此类与ArrayList类一样,都是AbstractList的子类。所以,此时的操作只是List接口的子类就按照List进行操作。

package 类集;

import java.util.List;
import java.util.Vector;

public class VectorDemo {
	public static void main(String agrs[]) {
		// 实例化List对象,并且指定泛型类型
		List<String> all = new Vector<>();
		// 增加内容,此方法从Collection接口继承而来
		all.add("hello");
		// 增加内容,此方法是List接口单独定义的
		all.add(0, "LXH");
		// 增加内容,此方法是从Collection接口继承而来
		all.add("world");
		// 根据索引删除内容,此方法是List接口单独定义的
		all.remove(1);
		// 删除指定对象
		all.remove("world");
		System.out.print("集合中的内容是:");
		System.out.print("集合中的内容是:");
		// size()方法从Collection接口继承而来
		for (int x = 0; x < all.size(); x++) { 
			// 此方法是List接口单独定义的
			System.out.print(all.get(x) + "、"); 

		}
	}
}





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值