一丶查找html
public static <T extends Comparable<T>>boolean linearSearch(T[] data,int min,int max,T target)
二丶排序java
问题:建立泛型方法与建立一个引用泛型参数的类有何区别?git
问题解决方案:算法
//此处T能够随便写为任意标识,常见的如T、E、K、V等形式的参数经常使用于表示泛型 //在实例化泛型类时,必须指定T的具体类型 public class Generic<T>{ //key这个成员变量的类型为T,T的类型由外部指定 private T key; public Generic(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定 this.key = key; } public T getKey(){ //泛型方法getKey的返回值类型为T,T的类型由外部指定 return key; } } //泛型的类型参数只能是类类型(包括自定义类),不能是简单类型 //传入的实参类型需与泛型的类型参数类型相同,即为Integer. Generic<Integer> genericInteger = new Generic<Integer>(123456); //传入的实参类型需与泛型的类型参数类型相同,即为String. Generic<String> genericString = new Generic<String>("key_vlaue"); Log.d("泛型测试","key is " + genericInteger.getKey()); Log.d("泛型测试","key is " + genericString.getKey());
注意数组
在java中,泛型类的定义很是简单,可是泛型方法就比较复杂了。数据结构
尤为是咱们见到的大多数泛型类中的成员方法也都使用了泛型,有的甚至泛型类中也包含着泛型方法,这样在初学者中很是容易将泛型方法理解错了。学习
泛型类,是在实例化类的时候指明泛型的具体类型;泛型方法,是在调用方法的时候指明泛型的具体类型 。测试
/* 泛型方法的基本介绍 传入的泛型实参 return T 返回值为T类型 说明: 1)public 与 返回值中间<T>很是重要,能够理解为声明此方法为泛型方法。 2)只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并非泛型方法。 3)<T>代表该方法将使用泛型类型T,此时才能够在方法中使用泛型类型T。 4)与泛型类的定义同样,此处T能够随便写为任意标识,常见的如T、E、K、V等形式的参数经常使用于表示泛型。 */ public <T> T genericMethod(Class<T> tClass)throws InstantiationException , IllegalAccessException{ T instance = tClass.newInstance(); return instance; }
问题:使用线性查找法对Contact类对象进行查找时出现错误,查找数组中已有对象返回false
this
问题解决方案:.net
//线性查找法 public static <T> boolean linearSearch(T[] data, int min, int max, T target) { int index = min; boolean found = false; while (!found && index <= max) { found = data[index].equals(target); index++; } return found; }
经过与结对伙伴讨论得知.equals
方法是Object类里的方法,对Object类对象可以正常使用,可是对本身建立的类不能正常使用,Contact类就是本身写的类,判断是否相等必须本身再写一个判断是否相等的方法来实现。
public boolean equal(Contact other){ if (lastName.equals(other.lastName)&&firstName.equals(other.firstName)&&phone.equals(other.phone)) return true; else return false; }
上周无错题!!!
本周的主要学习内容是对查找和排序方法的实现的学习,有一个较深的感触就是理解算法与实现算法仍是有较大距离的,在算法的实现过程当中总会出现各类各样的bug,须要耐下心来经过调试解决问题!本周收获仍是挺多的,继续努力吧!!!
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 4/4 | |
第二周 | 464/464 | 1/2 | 10/14 | 理解掌握了用数组和链表实现栈的方法 |
第三周 | 494/958 | 1/3 | 10/24 | 理解掌握了用数组和链表实现队列的方法 |
第四周 | 1629/2587 | 2/5 | 20/44 | 对用链表和数组实现列表进行了学习 |
第五周 | 856/3443 | 2/6 | 15/59 | 较为深刻的学习了查找和排序方法的实现 |
计划学习时间:20小时
实际学习时间:15小时
改进状况:提升学习的效率,保证学习的质量,遇到难题不要慌,耐下心来解决问题!!!