黑马程序员----泛型


-------黑马程序员、专注Java、Android培训、期待与您交流!-------

 黑马程序员----泛型_第1张图片

泛型的由来!和使用方法解释和演示解说!

黑马程序员----泛型_第2张图片

黑马程序员----泛型_第3张图片

编译报错原因:TreeSet二叉树类型要进行比较,自动比较姓名或年龄?凭什么?要自己实现comparable接口中的compareTo方法。

比较什么类型就传什么类型,默认下就是object类型。

黑马程序员----泛型_第4张图片

实现compareTo方法

黑马程序员----泛型_第5张图片这里再次使用到泛型,传入比较类型,省去了强转的动作!

黑马程序员----泛型_第6张图片自己写的equals


黑马程序员----泛型_第7张图片

JAVA给的默认hashCode方法,其实跟之前自己写的是一样的。就是为了确保哈希值的唯一性

黑马程序员----泛型_第8张图片JAVA给的equals方法。

黑马程序员----泛型_第9张图片

想用姓名来排序,传进去一个自己写的判断方法。

黑马程序员----泛型_第10张图片传入排序。

以上的例子需自己编写实践练习!(编程语言没绝经!多动手!)

黑马程序员----泛型_第11张图片

迭代器的复用,加上泛型安全机制实例。设置上限!黑马程序员----泛型_第12张图片下限


练习:

package cn.itcast.generic.demo;


import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

/*
 * map练习
 * 给个字符串ababc,计算当中字母的个数,输出格式如:a(2)b(2)(1)....
 * 使用map的好处,键值的存放没有序,有对应的值,好用!有序的可以考虑用数组
 * 但是需要输出有序,所以使用TreeMap,直接多态不使用子类的特有方法
 * 
 * 思路:
 * 1.将字符串转成字符数组
 * 2.遍历字符数组中的字母,用来当键值存放,存放时对应值就是1,如果再次遍历到相同键值,对应值就拿出来加1并覆盖掉
 * 3.用entryset取出map集合中的键值和对应值,打印出来。
 */
public class MapTest
{

	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		String str = "asdfasdfgwryujlqwerhigfhsdfqwasdfghkjhjoxasdehkuouy";
		
		//来个方法运算后得出一个有序的字符串
		String s = getCountString(str);
		
		System.out.println(s);
	}

	public static String getCountString(String str)
	{
		// TODO Auto-generated method stub
		//将字符串转成字符数组
		char[] ch = str.toCharArray();
		Map  m = new TreeMap();
		//开始遍历字母当键值
		
		for (int i = 0; i < ch.length; i++)
		{
			
			if('a'>ch[i] && ch[i]>'z' || 'A' m)
	{
		
		// TODO Auto-generated method stub
		StringBuilder sb = new StringBuilder();//创建一个字符串缓冲区,好用里面的方法完成任务
		
		Iterator it = m.keySet().iterator();//获取键值的迭代器
		
		while(it.hasNext())
		{
			Character key = it.next();
			Integer value = m.get(key);
			
			sb.append(key+"("+value+")");
		}
		return sb.toString();
	}

}




package cn.itcast.p1.map.test;

import java.util.HashMap;
import java.util.Map;

public class MapTest2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		/*
		 * Map在有映射关系时,可以优先考虑。
		 * 
		 * 在查表法中的应用较为多见。
		 */
		
		String week = getWeek(1);
		System.out.println(week);
		
		System.out.println(getWeekByMap(week));
	}
	public static String getWeekByMap(String week){
		
		Map map = new HashMap();
		
		map.put("星期一","Mon");
		map.put("星期二","Tus");
		map.put("星期三","Wes");
		map.put("星期日","Sun");
		map.put("星期天","Sun");
		
		return map.get(week);
	}
	
	
	public static String getWeek(int week){
		
		if(week<1 || week>7)
			throw new RuntimeException("没有对应的星期,请您重新输入");
		
		String[] weeks = {"","星期一","星期二"};
		
		return weeks[week];
	}

}


你可能感兴趣的:(黑马程序员----泛型)