Java中的集合类

集合可以看作是一个容量,如红色的衣服可以看做是一个集合,所有Java类中的书可以看作一个集合。对于集合中的各个对象很容易将其放到集合中,也很容易将其取出来,还可以将其按照一定的顺序进行摆放。Java中提供了不同的集合类,这些类具有不同的存储对象的方式,并提供了相应的方法以方便用户进行遍历、添加、删除、以及查找指定的对象。

集合类存放于java.util包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
集合类型主要有3种:set(集)、list(列表)和map(映射)。

1、集
集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。对集中成员的访问和操作是通过集中

对象的引用进行的,所以集中不能有重复对象。集也有多种变体,可以实现排序等功能,如TreeSet,它把对象添加到集中的操作将变为按照某种比较规则将其插

入到有序的对象序列中。它实现的是SortedSet接口,也就是加入了对象比较的方法。通过对集中的对象迭代,我们可以得到一个升序的对象集合。

2列表
列表的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没
有顺序的集是不同的。

列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。

3、映射
映射与集或列表有明显区别,映射中每个项都是成对的。映射中存储的每个对象都有一个相关的关键字(Key)对象,关键字决定了对象在映射中的
()

存储位置,检索对象时必须提供相应的关键字,就像在字典中查单词一样。关键字应该是唯一的。

List的常用方法:

增:

Arrays.asList(arr)`把一个数组转换成List集合

list.add(el)` 把一个元素添加到集合的队尾位置

list.add(index, el)` 把一个元素添加到集合的指定位置

list.addAll(List)` 把一个集合添加到另一个集合的队尾位置

list.addAll(index, List)` 把一个集合添加到另一个集合的指定位置


删:

list.remove(el)` 删除集合中首次出现的指定的元素

list.remove(index)` 删除集合中指定位置的元素

list.removeAll(el)` 删除集合中所有元素


改:

list.set(index, el)` 用指定的元素替换列表中指定位置的元素

查:

通过for循环遍历集合

通过foreach循环遍历集合

通过迭代器(Iterator)遍历集合

以下是一个简单的小程序:

public class Course {
	
	public String id;
	public String name;
	
	public Course(String id, String name) {
		this.id = id;
		this.name = name;
	}
}

public class Student {
	public String id;
	public String name;
	public Set courses;
	public Student(String id, String name) {
		this.id = id;
		this.name = name;
		this.courses = new HashSet();
	}
}


public class ListTest {
	public List coursesToSelect;
	public ListTest() {
		this.coursesToSelect = new ArrayList();
	}
	public void TestAdd() {
		
		Course c1 = new Course("1", "数据结构");
		coursesToSelect.add(c1);
		Course temp = (Course)coursesToSelect.get(0);
		System.out.println("添加了课程:"+temp.id+":"+temp.name);
		
		Course c2 = new Course("2", "C语言");
		coursesToSelect.add(0, c2);
		Course temp2 = (Course)coursesToSelect.get(0);
		System.out.println("添加了课程:"+temp2.id+":"+temp2.name);
		
		Course[] course = {new Course("3", "离散数学"), new Course("4", "汇编语言")};
		coursesToSelect.addAll(Arrays.asList(course));
		Course temp3 = (Course)coursesToSelect.get(2);
		Course temp4 = (Course)coursesToSelect.get(3);
		System.out.println("添加了两门课程:"+temp3.id+":"+temp3.name+"  "+temp4.id+":"+temp4.name);
		
		Course[] course2 = {new Course("5", "高等数学"), new Course("6", "大学英语")};
		coursesToSelect.addAll(2, Arrays.asList(course2));
		Course temp5 = (Course)coursesToSelect.get(2);
		Course temp6 = (Course)coursesToSelect.get(3);
		System.out.println("添加又两门课程:"+temp5.id+":"+temp5.name+";"+temp6.id+":"+temp6.name);
	}
	
	//遍历list中元素的方法(for循环)
	public void testGet(){
		int size = coursesToSelect.size();
		System.out.println("有如下课程:");
		for(int i = 0; i < size; i++) {
			Course cr = (Course)coursesToSelect.get(i);
			System.out.println("课程"+" "+cr.id+":"+cr.name);
		}
	}
	
	//遍历list元素的方法(iterator)
	public void testIterator() {
		Iterator it = coursesToSelect.iterator();
		System.out.println("有如下课程(iterator):");
		while(it.hasNext()) {
			Course cr = (Course)it.next();
			System.out.println("课程"+" "+cr.id+":"+cr.name);
		}
	}
	
	//遍历list元素的方法(foreach)
	public void testForEach() {
		System.out.println("有如下课程(foreach):");
		for(Object obj:coursesToSelect) {
			Course cr = (Course)obj;
			System.out.println("课程"+" "+cr.id+":"+cr.name);
		}
	}
	
	//修改list中元素方法
	public void testModify() {
		coursesToSelect.set(2, new Course("0", "Python"));
	}
	
	//删除list中元素
	public void testRemove() {
		Course cr = (Course)coursesToSelect.get(2);
		coursesToSelect.remove(cr);
	}
	
	public static void main(String args[]) {
		ListTest lt = new ListTest();
		lt.TestAdd();
		//lt.testGet();
		//lt.testIterator();
		lt.testModify();
		lt.testForEach();
		lt.testRemove();
		lt.testForEach();
	}
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值