javaCompare接口及泛型

一、Compare接口

要对一个类的两个对象进行排序可以调用sort方法,但是如果一个类想要自己定义排序的方式就需要实现Compare接口。java.lang.Compare,具体的见API文档。只有一个方法compareTo方法。

package Container;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

public class Name implements Comparable {
private String firstname;
private String lastname;
Name(String firstname,String lastname){
	this.firstname=firstname;
	this.lastname=lastname;
}
public String getfirstname(){
	return firstname;
}
public String getlastname(){
	return lastname;
}
public String toString(){
	return firstname+" "+lastname;
}
public boolean equals(Object o){
	if(o instanceof Name){
		Name obj=(Name)o;
		return(firstname.equals(obj.firstname)&&lastname.equals(obj.lastname));
	}
	return super.equals(o);
	
}
@Override
//digui
public int compareTo(Object o)/*<Name>*/ {
	// TODO Auto-generated method stub
	Name name=(Name)o;//为什么转化类型。因为只有和自己类的对象比较才有意义,如果使用泛型则不需要
	int lastn=lastname.compareTo(name.lastname);
	return (Integer) (lastn==0?lastname:firstname.compareTo(name.firstname));
}
@SuppressWarnings("unchecked")
public static void main(String args[]){
	List l1=new LinkedList();
	//三个实现Compare类的对象
	l1.add(new Name("Karel","lee"));
	l1.add(new Name("Steven","m"));
	l1.add(new Name("Jone","o"));
	//把三个对象放在列表中,调用compareTo方法对对象列表自然排序
	System.out.println(l1);
	//随机排序
	Collections.sort(l1);
	System.out.println(l1);
}
}

结果:[Karel lee, Steven m, Jone o]
[Jone o, Karel lee, Steven m]

 

二、泛型

泛型出现的原因:

  JDK1.4之前的的版本类型不明确,装入一个集合(或者容器)的类型都被当作Object对待,失去了自己 的实际类型。就通过在定义集合的同时定义集合中对象的类型比如 List<String>c=new LinkedList()            

Map <String integer>m=...

。通过<>的形式,定义了什么类型,返回的就是什么类型

如何判断一个可以使用泛型,查API看一个类的后面有<>

 

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;


public class Testfanxing {
public static void main(String args[]){
	List <String> l=new ArrayList();
	l.add("aaa");
	l.add("bbb");
	l.add("ccc");
	//String s=(String) l.get(0);//不加泛型
	String s=l.get(0);
	System.out.println(s);
	Collection <String>c=new ArrayList();
	c.add("aaa");
	c.add("bbb");
	c.add("ccc");
	
	for(int i=0;i<c.size();i++){
		String s1=(String) ((ArrayList) c).get(i);
		System.out.println(s1);
	}
}
}
结果:aaa
aaa
bbb
ccc

 注:看一下本节上一个例子代码

转载于:https://my.oschina.net/kongjunli/blog/735466

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值