Java中Set、List、Map三大集合特点

Set、List、Map是常见的用来存储数据的集合,其中Set与List是Collection的子接口。
Collection表示一组对象的集合,这些对象也叫Collection的元素,JDK中不提供直接实现Collection的方法,而是通过它的子接口来实现,如Set和List。Collection接口的不同子接口根据其自身属性有不同的特点,他们或允许重复的值,或有序。
Map是键值对的集合,利用键映射到值。每个键在集合中具有唯一性,不能重复,且只能映射到一个值。
Set、List和Map的主要特点如下:

  • Set是一个无序的集合,不允许重复值的存在;
  • List是一个有序的集合,可存在重复值;
  • Map是一个映射关系的集合。

Set

Set利用迭代器取出单个元素。
Set中的实现包括HashSet和TreeSet。
HashMap无序,允许存在null元素;
TreeSet使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序。

 public class SetTest {
 
	public static void main(String[] args) {
		SetTest stest = new SetTest();
		java.util.Collection sset =  stest.getUserSet(3);
		System.out.println("集合中共有"+sset.size()+"个元素");
		java.util.Iterator<Student> it = sset.iterator();
		
		while(it.hasNext()) {
			Student st = it.next();
			st.showInfo();
		}
	}
	
	public java.util.Collection getUserSet(int UserCount){
		Set sset = new HashSet();
		for(int i = 0;i<UserCount;i++) {
			Student stu = new Student("用户"+(i+1),i+1);
			sset.add(stu);
		}
		
		return sset;
	}
}

List

List是有序的Collection,可以根据元素的整数索引访问元素,并搜索列表中的元素,对列表中的元素进行精确控制。List允许存在重复的元素。
List的具体实现包括ArrayList、LinkedList、Vector等。
ArrayList通过大小可变数组的实现List,可根据索引访问列表;
LinkedList则是通过链表实现List,具有链表的特点;
Vector 通过可变数组实现,可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。

public class ListTest {
	
	public static void main(String[] args) {
		ListTest st = new ListTest();
		java.util.List<Student> list = st.getUserList(5);
		System.out.println("集合中的元素个数为:"+list.size());

		Student stu = list.get(3);
		stu.showInfo();
		
		st.printList(list);
	}
	
	public void printList(java.util.List<Student> list) {
		for(int i = 0;i<list.size();i++) {
			Student stu = list.get(i);
			stu.showInfo();
		}
			
		
	}
	

	public java.util.List<Student> getUserList(int UserCount){
		List userlist = new ArrayList();
		for(int i = 0 ; i<UserCount;i++) {
			Student stu = new Student("name"+(char)(i+65),i+1);
			userlist.add(stu);
		}
		
		return userlist;
	}
}

Map

Map是一个接口,它不是collection的子接口或实现类,通过键值对实现数据的存储。Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。
Map的主要实现方法包括TreeMap和HashMap。
TreeMap实现根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,可明确保证映射的顺序。
HashMap 是基于哈希表的Map实现,不保证映射的顺序,允许使用 null 值和 null 键。

public class MapTest {
	
	public static void main(String[] args) {
		MapTest mt = new MapTest();
		Map<String,Student> map = mt.createUser(5);
		mt.printmap(map);
		String key = ""+2;
		System.out.println("取出的Key为"+key+"对象信息是:");
		Student stu = map.get(key);
		stu.showInfo();
		
	}
	
	public java.util.Map<String,Student> createUser(int count){
		java.util.Map map = new java.util.HashMap();
		for(int i=0;i<count;i++) {
			Student stu = new Student("name"+(char)(i+65),i+1);
			map.put(""+i, stu);
		}
		return map;
	}
	
	public void printmap(Map<String,Student> map) {
		java.util.Set<String> set = map.keySet();
		java.util.Iterator<String> it = set.iterator();
		
		while(it.hasNext()) {
			String key = it.next();
			Student stu = map.get(key);
			stu.showInfo();
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值