java compare接口_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)/**/ {

// 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对待,失去了自己 的实际类型。就通过在定义集合的同时定义集合中对象的类型比如 Listc=new LinkedList()

Map 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 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 c=new ArrayList();

c.add("aaa");

c.add("bbb");

c.add("ccc");

for(int i=0;i

String s1=(String) ((ArrayList) c).get(i);

System.out.println(s1);

}

}

}

结果:aaa

aaa

bbb

ccc

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值