集合框架总结

集合框架总结
Set List 继承自collection类,两种都是接口,得由他们的子类去实现
Set具有无序性,即取出没有按照之前放入的顺序取出。不可重复性,一个set集合里面不能有重复的对象或值。而list则是以线性方式存储,跟队列蛮像的。可重复。

实现set接口的用法
增public Set<Student> add(Set<Student> set, String num, int score) {
//实例化学生对象
Student st = new Student(num, score);
set.add(st);
return set;
}
删public void delete(Set<Student> set, int score) {
// 实例化迭代器,把集合里的元素取出来放到另外一个集合里,在原来的集合删
//掉现在的集合!!达到remove的效果
System.out.println("移除低于" + score + "分的学生");
//是用迭代器,来取出set集合中的元素
Iterator it = set.iterator();
//set我都把它指定为只接受student类!!
//set类是接口,得由子类来实例化对象,主要有hashset等。
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);
}

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;
}

List接口的用法
List需用子类来实现:常用的子类有ArrayList和Vector
增:public List<Student> add(List<Student> list, String num, int score) {
Student st = new Student(num, score);
list.add(st);
return list;
}
public void delete(List<Student> list, int score) {
// 实例化迭代器,把集合里的元素取出来放到另外一个集合里,在原来的集合删、//掉现在的集合!!达到remove的效果
System.out.println("移除低于" + score + "分的学生");
for (int i = 0; i < list.size(); ) {
Student stu = list.get(i);
//注意,当移除了一个元素之后,链表就直接少了一个,同样的索引值现在是后一个往前移,所以就不用i++,如果没有移除,就执行i++
if(stu.getScore()<score){
list.remove(i);
}else{
i++;
}
}
}
改:public int change(List<Student> list, String num, int score) {
// 先实例化一个迭代器
System.out.println("改变学号为:" + num + "的学生的学分为" + score);
Iterator it = list.iterator();
while (it.hasNext()) {
// 强制转换成学生类
Student stu = (Student) it.next();
// 根据学号取得的学生类进行设置学分!
if (stu.getNum() == num) {
stu.setScore(score);

}
}
return score;
}
Map接口(映射)
Key值与value值相对应,比如学号与学生对象,ip地址与主机名等
常用子类有HashMap 和HashTable,map中的key值不能重复,但value可以重复
有以下方法
V put(K key, V value)将指定的值与此映射中的指定键关联(可选操作)。如果此映射以前包含一个该键的映射关系,则用指定值替换旧值(当且仅当 m.containsKey(k) 返回 true 时,才能说映射 m 包含键 k 的映射关系)。
remove
V remove(Object key)如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。更确切地讲,如果此映射包含从满足 (key==null ? k==null :key.equals(k)) 的键 k 到值 v 的映射关系,则移除该映射关系。(该映射最多只能包含一个这样的映射关系。)
get
V get(Object key)返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
使用实例
遍历map的key值
public void print(Map<String ,Student>map){
//先把map的key全集合在一个set集合里面
Set<String> set = map.keySet();
//是用迭代器一个个取出
Iterator it = set.iterator();
while(it.hasNext()){
String s=(String) it .next();
//通过map的get方法,来返回value值,并付给stu对象
Student stu = map.get(s);
stu.show();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值