《集合》总结
程序员文章站
2022-07-08 10:45:14
...
1、集合框架总体结构分3种:
①Set接口:提供一个无序的集合
②List接口:提供一个有序的集合
③Map接口:提供一个映射关系的集合数据结构
PS:在JDK5中提供了Queue接口来提供基于队列的集合体系。
下面介绍一下主要的方法:
①boolean add(E o):向集合中添加对象
②void clear():清空集合
③boolean remove(Object o):从集合中移除一个对象
④int size():获取集合中对象的个数
2、下面来介绍一下Set接口:
Set:由于是无序的,所以算是最简单的一种集合,只是简单的把对象加入到集合中,就像往口袋里放东西一样的!
Set接口的实现方法:代码如下
/**
* 删减集合元素的方法
*/
public void delete(Set<Student> set, int score) {
// 实例化迭代器,把集合里的元素取出来放到另外一个集合里,在原来的集合删掉现在的集合!!达到remove的效果
System.out.println("移除低于" + score + "分的学生");
Iterator it = set.iterator();
Set<Student> newset = new HashSet<Student>();
for (int i = 0; i < set.size(); i++) {
if (it.hasNext()) {
Student stu = (Student) it.next();
// 当取得的对象分数小于所要的分数,就添加到新的集合里面
if (stu.getScore() < score) {
newset.add(stu);
}
}
}
// 旧的集合移除新的集合!!只是移除集合里面的地址。
set.removeAll(newset);
}
/**
* 改变集合元素的方法,根据所得到的学号来改分数
*
* @param score指的是要改变的分数值
* @param set是要改的集合
* @param num是指要操作的学号
*/
public int change(Set<Student> set, String num, int score) {
// 先实例化一个迭代器
System.out.println("改变学号为:" + num + "的学生的学分为" + score);
Iterator it = set.iterator();
while (it.hasNext()) {
// 强制转换成学生类
Student stu = (Student) it.next();
// 根据学号取得的学生类进行设置学分!
if (stu.getNum() == num) {
stu.setScore(score);
}
}
return score;
}
/**
* 添加set集合元素的方法
* @return 一个Set集合
*
*/
public Collection getSet(int userCount){
//实例化一个Set集合
Set s = new HashSet();
//循环实例化对象,并添加到Set集合里
for(int i = 0;i<userCount;i++){
Student u = new Student("用户——"+((char)(65+i)),i+1);
s.add(u);
}
return s;
}
3、List接口:
List:主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和结尾!
List接口的实现方法:代码如下
/**
* 删减集合元素的方法
*/
public void delete(List<Student> list, int score) {
// 实例化迭代器,把集合里的元素取出来放到另外一个集合里,在原来的集合删掉现在的集合!!达到remove的效果
System.out.println("移除低于" + score + "分的学生");
//Iterator it = list.iterator();
//List<Student> newlist = new ArrayList<Student>();
for (int i = 0; i < list.size(); ) {
Student stu = list.get(i);
//注意,当移除了一个元素之后,链表就直接少了一个,同样的索引值现在是后一个往前移,所以就不用i++,如果没有移除,就执行i++
if(stu.getScore()<score){
list.remove(i);
}else{
i++;
}
}
4、Map接口:
Map:存入的对象是一对一对的,而不是像之前介绍的List和Set一样,是一一对应的对象。
Map存放两种对象:一种称为key(键),一种称为value(值),这一对对象在Map中称为一个Entry(项)
PS:Map中的key不能重复,但是值可以重复!
Map接口实现方法:代码如下
/**
* 创建一个Map集合,并往里添加对象
* @return Map集合
*/
public Map<String,Student> createTable(){
//实例化一个Map集合
Map userMap = new HashMap();
//循环添加对象
for(int i = 0;i<6;i++){
Student us = new Student("1"+i,i+50);
userMap.put(""+i,us);
}
return userMap;
}
/**
* 输出Map集合的方法
* @param um Map集合
*/
private void printMap(Map<String, Student> um) {
//实例化一个Set集合,用来存储Map的key键
Set<String> set = um.keySet();
Iterator<String> it = set.iterator();
//循环输出
while(it.hasNext()){
String key = it.next();
Student uf = um.get(key);
uf.show();
}
}
PS:所有的集合都支持泛型定义!
上一篇: ContentProvider学习
下一篇: 测试与 debug 心得