集合与接口练习

1.定义一个方法listTest(ArrayList al, Integer s),要求返回s在al里面第一次出现的索引,如果s没出现过返回-1。
import java.util.ArrayList;
import java.util.List;

public class ListTestDemo {
    public static void main(String[] args) {
	    List<Integer> list = new ArrayList<Integer>();
	    list.add(7);
	    list.add(4);
	    list.add(2);
	    list.add(1);
	    list.add(5);
	    list.add(2);
	    System.out.println(ListTest(list, 2));
	    System.out.println(list.indexOf(7));
    }

    public static int ListTest(List<Integer> al, Integer s) {
	    for(int i = 0; i < al.size(); i++) {
		    if(al.get(i).equals(s)) {//此时集合中和s都是引用数据类型。判断是否相等采用的是equals方法
			    return i;
		    }
	    }
	    return -1;
    }
}
2.现在有一个map集合如下:
Map map = new HashMap();  
map.put(1, "张三丰");  
map.put(2, "周芷若");  
map.put(3, "汪峰");  
map.put(4, "灭绝师太");

要求:

1.遍历集合,并将序号与对应人名打印。
2.向该map集合中插入一个编码为5姓名为李晓红的信息
3.移除该map中的编号为1的信息
4.将map集合中编号为2的姓名信息修改为"周林"

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

public class MapStudy {
    public static void main(String[] args) {
	    Map<Integer, String> map = new HashMap<Integer, String>();
	    map.put(1,"张三丰");
	    map.put(2,"周芷若");
	    map.put(3,"汪峰");
	    map.put(4,"灭绝师太");
	
	    //新增
	    map.put(5, "李晓红");
	
	    //删除
	    map.remove(1);
	
	    //修改(覆盖)
	    map.put(2, "周林");
	
	    //遍历
	    Set<Integer> set = map.keySet();
	    Iterator<Integer> it = set.iterator();
	    while(it.hasNext()) {
		    Integer key = it.next();
		    System.out.println("序号为:" + key + ",姓名为:" + map.get(key));
	    }
    }
}
3.有2个数组,第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省],第二个数组为:[哈尔滨,杭州,南昌,广州,福州],将第一个数组元素作为key,第二个数组元素作为value存储到Map集合中。如{黑龙江省=哈尔滨, 浙江省=杭州, …}。
import java.util.HashMap;
import java.util.Map;

public class MapStudy {
	public static void main(String[] args) {
		String[] province = {"黑龙江省","浙江省","江西省","广东省","福建省"};
		String[] city = {"哈尔滨","杭州","南昌","广州","福州"};
		Map<String,String> map = new HashMap<String,String>();
		for(int i = 0; i < province.length; i++) {
			map.put(province[i], city[i]);
		}
		System.out.println(map);
	}
}
4.在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击 这时候,就可以使用接口来实现这个效果。 接口就像是一种约定,我们约定某些英雄是物理系英雄,那么他们就一定能够进行物理攻击

1.设计物理攻击接口
2.设计一类英雄,能够使用物理攻击
3.魔法攻击接口
4.设计一类英雄,只能使用魔法攻击
5.设计一类英雄,既能进行物理攻击,又能进行魔法攻击
6.设计辅助英雄接口

/**
 * 英雄基类
 * @author 一教室
 *
 */
public class Hero {
	public String name;
	public int hp;//生命值
	public int mp;//魔法值
	public double speed;//移动速度
	public int defense;//防御值
	public int attackPower;//攻击力
	public Hero(String name, int hp, int mp, double speed, int defense, int attackPower) {
		super();
		this.name = name;
		this.hp = hp;
		this.mp = mp;
		this.speed = speed;
		this.defense = defense;
		this.attackPower = attackPower;
	}
	public Hero() {
		super();
	}
}

/**
 * 物理系攻击接口
 * @author 一教室
 *
 */
public interface AD {
	//物理伤害方法
	public void physicalAttack();
}

/**
 * 物理系英雄
 * @author 一教室
 *
 */
public class ADHero extends Hero implements AD {

	@Override
	public void physicalAttack() {
		System.out.println("正在使用物理攻击");
	}

}

/**
 * 魔法系攻击接口
 * @author 一教室
 *
 */
public interface AP {
	/**
	 * 魔法攻击方法
	 */
	public void magicAttack();
}

public class APHero extends Hero implements AP {

	@Override
	public void magicAttack() {
		System.out.println("正在进行魔法攻击");
	}

}

public class ADAPHero extends Hero implements AD, AP{

	@Override
	public void magicAttack() {
		System.out.println("又进行魔法攻击");
	}

	@Override
	public void physicalAttack() {
		System.out.println("又进行物理攻击");
	}

}

/**
 * 辅助英雄接口
 * @author 一教室
 *
 */
public interface SUP {
	public void support();
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值