泛型 学习

package chapter1;

import java.util.Comparator;

public class FindMax2 {
	public static void main (String [] args ){
		String [] arr ={"z","q","a"};
		System.out.println(FindMax(arr, new CaseInsentiveCompare()));
	}

	public static <T> T FindMax (T[] arr, Comparator<? super T> cmp){
		int maxIndex =0;
		for (int i =0; i<arr.length;i++){
			if (cmp.compare(arr[i], arr[maxIndex])>0){
				maxIndex = i;
			}
		}
		return arr[maxIndex] ;
	}
}

class CaseInsentiveCompare implements Comparator<String>{

	public int compare(String lhs, String rhs) {
		// TODO Auto-generated method stub
		return lhs.compareToIgnoreCase(rhs);
	}

}

  

时间: 2024-12-25 14:27:48

泛型 学习的相关文章

委托 ,事件,泛型学习总结

委托 ,事件,泛型学习总结 C# 委托 一图流: 委托.png 如果这些内容帮助到你了,希望您给予支持 o(^ ▽ ^)o

java 泛型学习

http://blog.csdn.net/archie2010/article/details/6232228 学习集合框架的时候经常用hasmap<Integer,Integer>就是泛型,c++里面叫模板,其实我是想研究一下迭代器模式的.睡觉,明天再说. 1 import java.util.ArrayList; 2 import java.util.Collection; 3 4 class A< T extends Collection> 5 { 6 private T x

java泛型学习(2)

一:深入泛型使用.主要是父类和子类存在泛型的demo /** * 父类为泛型类 * @author 尚晓飞 * @date 2014-7-15 下午7:31:25 * * * 父类和子类的泛型. * [泛型的具体声明] * (1)子类直接声明具体类型 * (2)使用时指定具体类型(new 对象时) * (3)子类泛型>=父类泛型(个数,类型,顺序无关) * * [泛型的确定] * (1)属性:在父类中,泛型随父类泛型而定 * 子类中,泛型随子类泛型而定 * (2)重写方法中: * 泛型全部随父类

Java泛型学习笔记--Java泛型和C#泛型比较学习(一)

总结Java的泛型前,先简单的介绍下C#的泛型,通过对比,比较学习Java泛型的目的和设计意图.C#泛型是C#语言2.0和通用语言运行时(CLR)同时支持的一个特性(这一点是导致C#泛型和Java泛型区别的最大原因,后面会介绍).C#泛型在.NET CLR支持为.NET框架引入参数化变量支持.C#泛型更类似C++模板,可以理解,C#泛型实际上可以理解为类的模板类.我们通过代码实例来看C# 2.0泛型解决的问题,首先,我们通过一个没有泛型的迭代器的代码示例说起,代码实现如下: interface

Java泛型学习笔记 - (七)浅析泛型中通配符的使用

一.基本概念:在学习Java泛型的过程中, 通配符是较难理解的一部分. 主要有以下三类:1. 无边界的通配符(Unbounded Wildcards), 就是<?>, 比如List<?>. 无边界的通配符的主要作用就是让泛型能够接受未知类型的数据. 2. 固定上边界的通配符(Upper Bounded Wildcards): 使用固定上边界的通配符的泛型, 就能够接受指定类及其子类类型的数据. 要声明使用该类通配符, 采用<? extends E>的形式, 这里的E就是

Java泛型学习笔记 - (六)泛型的继承

在学习继承的时候, 我们已经知道可以将一个子类的对象赋值给其父类的对象, 也就是父类引用指向子类对象, 如: 1 Object obj = new Integer(10); 这其实就是面向对象编程中的is-a关系. 既然上面的代码正确, 那么在泛型中, 也可以使用如下代码: 1 public class Box<T> { 2 private T obj; 3 4 public Box() {} 5 6 public T getObj() { 7 return obj; 8 } 9 10 pub

泛型 学习记录1

最近在学习泛型,在用泛型的时候有3个不能做的事情:一是不能使用instanceof,二是不能new对象,三是不能创建泛型数组.下面我想记录一下我对这3点的理解,尤其是第三点. 不能使用instanceof 这一点我觉得还是比较好理解的,因为擦除的原因,泛型会被擦除到类型上限.在这种情况下使用instanceof是没有什么意义的,因为并不知道T的实际类型.就是说泛型在传入参数的时候编辑器会检查类型,保证类型的正确,而在取值赋值的时候会强制转型.而在其他地方使用,T会变成它的类型上限,如果没写类型上

泛型学习由浅入深

第一章:根据具体的需求得出结果: 需求为:通过编写单独的方法在控制台同时输出    int iValue=123,long lValue=123123 的类型. 第一种方法:单独调用方法并输出 (明确类型前提下) class Program { static void Main(string[] args) { Console.WriteLine("开始学习!!!"); int iValue = 123; long lValue = 123123; MethodShow.ShowInt

java泛型学习和实践(1)

引言 JDK1.5之后引入了泛型,泛型刚开始接触时比较难理解,经过慢慢学习,有一些收获,现总结下,既可以加深自身理解,也可以帮助他人. 由于本人水平有限,难免有不对的地方,还请指正.废话不多说,下面正式开始. 为了更直观的说明泛型,现假设一个司机开车的场景.我们需要3个类,Driver(司机).Ford(福特).Buick(别克). 第一版 第一版本代码如下: public class Buick { public void run(){ System.out.println("buick ru

java泛型学习和实践(4)

引言 前三节讲述了泛型常见声明及使用,泛型既可以在类上进行声明,也可以在单个方法上进行声明,并分别对这两种情况进行了总结.下面来学习下泛型扩展知识. 延用前面的Runnable接口.Buick类.Ford类.Driver类,新增加一个汽车容器类CarContainer 第一版 代码如下: public interface Runnable { public void run(); } public class Buick implements Runnable { @Override publi