Java集合类

           一、Java语言的java.util包中提供了一些集合类,这些集合类又被称为容器。提到容器不难会想到数组,集合类与数组的不同之处是,数组的长度是固定的,集合的长度是可变的;数组用来存放基本类型的数据,集合用来存放对象的引用。常用的集合有List集合,Set集合,Map集合,其中List与Set实现了Collection接口。各接口还提供了不同的实现类。上述集合类的继承关系如图所示:

Collection接口是层次接口中的根接口。构成Collection的单位,被称之为元素。Collection接口通常不能直接使用,但该接口提供了添加和删除元素、管理数据的方法。由于List接口都实现了Collection接口,因此这些方法对List集合和Set结合是通用的。


           二 、List接口的实现类

    要使用 List集合,通产情况下需要声明为List类型,然后通过List接口的实现类对集合进行实例化。List接口的实现类常用的有ArrayList与LinkedList。

           1、ArrayList类

           该类实现了可变的数组,允许所有的元素,包括Null。可以根据索引位置对集合进行快速的随机访问。缺点是向指定的索引位置插入对象或删除对象的速度较慢。语法格式如下:

List<String> list = new ArrayList<String>();

   

             2、LinkedList类

           该类采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象,经常需要向集合中插入、删除对象时,使用LinkedList类实现的List集合的效率较好;但是对于随机访问集合中的对象使用LinkedList类实现List集合的效率较慢。语法格式如下:

List<String> list = new ArrayList<String>();

<span style="color:#000000;">package list;

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

public class Gather {

	public static void main(String[] args) {
		List list = new ArrayList();		//创建集合对象
		int i = (int) (Math.random()*(list.size()-1));		//获得一个随机数
		list.add("a");
		list.add("b");
		list.add("c");
		System.out.println("随机获取数组中的元素:"+list.get(i));
		list.remove(2);
		System.out.println("将索引是‘2’的元素从数组中移除后,数组中的元素是:");
		for(int j = 0;j<list.size();j++){
			System.out.println(list.get(j)+"");
		}
	}

}</span>
运行结果如下:

<span style="color:#000000;">随机获取数组中的元素:a
将索引是‘2’的元素从数组中移除后,数组中的元素是:
a
b
</span>


          三、Set接口的实现类

          要使用set集合,通常情况下需要声明为Set类型然后通过Set接口的实现类来实例化Set接口的实现类常用的有HashSet和TreeSet类。语法格式如下:

Set<String> collSet = new HashSet<String>();

Set<String> collSet 1= new TreeSet<String>();

         由于Set集合中的对象是无序的,遍历Set集合的结果与插入Set集合的顺序并不相同。

package list;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CollectionDemo {

	public static void main(String[] args) {
		Set<people> hashSet = new HashSet<people>();
		hashSet.add(new people("陈同学",201111));
		hashSet.add(new people("王同学", 201112));
		hashSet.add(new people("李同学",201113));
		
		Iterator<people> it = hashSet.iterator();
		System.out.println("集合中的元素是:");
		while(it.hasNext()){
			people person = it.next();
			System.out.println(person.getname()+""+person.getid_card());
		}
	}

}

运行结果如下:

集合中的元素是:
李同学201113
陈同学201111
王同学201112

         四、Map接口的实现类

    Map接口常用的实现类有HashMap和TreeMap。通常建议使用HashMap实现类实现Map集合,因为由HashMap类实现的Map集合对于添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内部的映射关系进行快速查找;由HashMap类实现的Map集合对于添加或删除映射关系效率较高;而TreeMap中的映射关系存在一定的顺序,如果希望Map集合中的对象存在一定的顺序,应该使用TreeMap类集合。

       1、HashMap类

     该类基于哈希表的Map接口的实现,此实现提供所有可选的映射操作,并允许使用null值和null键,但必须保证键的唯一性。HashMap通过哈希码对其内部的映射关系进行快速查找。此类不保证映射的顺序,特别是不保证顺序恒久不变。

        2、TreeMap类

     该类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此集合中的映射关系具有一定的顺序。但在添加、删除、和定位映射关系上,TreeMap类比HashMap类的性能差一点。由于TreeMap类实现的Map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象是null

      可以通过HashMap类创建Map集合,当需要顺序输出时,再创建一个完成相同映射关系的TreeMap类实例。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值