compareTo的具体用法 我有两个字段,例如:a,b ,都是字符型的。现在想实现:如果a<b,那么程序继续向下进行。请问:用compareTo该怎么写??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String类型已经实现了compareTo()方法,可以直接用 字符型compareTo()方法已经实现 字符型compareTo()方法已经实现,我给你换个自定义类型的吧public class TestStudent { private String strName; private String strID;//唯一 public TestStudent() { // TODO Auto-generated constructor stub } public TestStudent(String name,String id){ setStrName(name); setStrID(id); } public String getStrID() { return strID; } public void setStrID(String strID) { this.strID = strID; } public String getStrName() { return strName; } public void setStrName(String strName) { this.strName = strName; } @Override public String toString() { return this.getStrName()+":"+this.getStrID(); } }import java.util.Comparator;import java.util.Set;import java.util.TreeSet;public class TestTreeSet { public static void main(String[] args) { Set<TestStudent> treeSet = new TreeSet<TestStudent>(new Comparator<TestStudent>() { public int compare(TestStudent o1, TestStudent o2) { return o1.getStrID().compareTo(o2.getStrID()); } }); treeSet.add(new TestStudent("lijie","121231")); treeSet.add(new TestStudent("lijie","5254")); for(TestStudent s:treeSet){ System.out.println(s); } }} if(a.compareTo(b)<0){ //自己的代码 } if(a.compareTo(b)<0)按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0。 这是字典排序的定义。如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引),要么长度不同,或者同时具备这两种情况。如果它们在一个或多个索引位置上的字符不同,假设 k 是这类索引的最小值;则在位置 k 上具有较小值的那个字符串(使用 < 运算符确定),其字典顺序在其他字符串之前。在这种情况下,compareTo 返回这两个字符串在位置 k 处两个char 值的差,即值: this.charAt(k)-anotherString.charAt(k) 如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo 返回这两个字符串长度的差,即值: this.length()-anotherString.length() if (a.compareTo(b)<0){ //a<b}else{ //a>=b} public int compareTo(Object o) { }重写。 compareTo方法是Object对象的。String对象已经给它实现了。底层是根据字符的ASCII码比较大小。程序里面可以直接调用"a".compareTo("b").如果对象是自定义的,可以在对象里面重写此方法。 Comparable<T>这个接口定义的compareTo方法,自定义对象可以实现Comparable<T>接口,并给出compareTo的实现,完成比较。详细的看API。 compareTo(String anotherString)是String类的方法,API中是这样描述的:“按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。”楼主说的是字符型数据,不知道你所说的是数据库中的“字符型”还是JAVA中的char。无所谓,只要你知道了compareTo方法的用法,就不难实现你想要的结果了。 实现Comparable接口重写compareTo()方法;如果类实现了该方法,当放入排序集合时,自动按照compareTo()进行排序 public DataTranVo Update(DataTran dt) throws Exception { conn = pool.getConnection(); vo = new DataTranVo(); cmd = new WdCommon(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String pkid = (String) dt.strPk; String jzmj = (String) dt.retForm.get("$jzmj"); String yymj = (String) dt.retForm.get("$yymj"); ///// String sql = ""; String params[] = {}; try { boolean allowadd = ///; if (allowadd) { QueryRunner qr = new QueryRunner(); qr.update(conn, sql, params); boolean issuccess = cmd.CommonSetLog(); if (issuccess) { DbUtils.commitAndClose(conn); dt.sMessage = "网点基本信息修改成功!"; } else { DbUtils.rollbackAndClose(conn); dt.sMessage = "网点基本信息修改失败!"; } } else { dt.sMessage = "该单位已经存在代码为:" + wdbm + "的网点,请重新设置网点代码!"; DbUtils.close(conn); } vo.setDataTran(dt); return vo; } catch (Exception e) { DbUtils.rollbackAndClose(conn); dt.sMessage = "网点基本信息修改失败!"; e.printStackTrace(); vo.setDataTran(dt); return vo; } }if kssj.compareTo(jssj){ //} else { //}这个我应该写在上面那段代码的什么地方? if (kssj.compareTo(jssj)<0){ // } else { // }这个我应该写在上面那段代码的什么地方? if (kssj.compareTo(jssj) <0){ // } else { // }这个我应该写在上面那段代码的什么地方?======================================================if (kssj.compareTo(jssj) <0){ doSomething;//代码增加在这里 } else { // } if (kssj.compareTo(jssj) <0)这个怎么总是不执行啊 用java循环解答:多种方法 组件不能完整显示 java中Keyboard类怎么用?? An unexpected error has been detected by Java Runtime Environment 请问一下这是什么错误,我以前从没见过 求助:关于netbeans生成主项目失败 到底什么样的类的对象需要有close()方法 JVM中的本地方法以及多线程管理问题。(100分)相求!!! 新手求助:关于javah的问题 阻塞 如何用程序设置JEditorPane被选中文字的颜色? java面向对象基本概念问题 初学者有问题请教
private String strName;
private String strID;//唯一
public TestStudent() {
// TODO Auto-generated constructor stub
}
public TestStudent(String name,String id){
setStrName(name);
setStrID(id);
}
public String getStrID() {
return strID;
}
public void setStrID(String strID) {
this.strID = strID;
}
public String getStrName() {
return strName;
}
public void setStrName(String strName) {
this.strName = strName;
}
@Override
public String toString() {
return this.getStrName()+":"+this.getStrID();
}
}import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;public class TestTreeSet {
public static void main(String[] args) {
Set<TestStudent> treeSet = new TreeSet<TestStudent>(new Comparator<TestStudent>() { public int compare(TestStudent o1, TestStudent o2) {
return o1.getStrID().compareTo(o2.getStrID()); } });
treeSet.add(new TestStudent("lijie","121231"));
treeSet.add(new TestStudent("lijie","5254"));
for(TestStudent s:treeSet){
System.out.println(s);
}
}}
if(a.compareTo(b)<0){
//自己的代码
}
按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0;compareTo 只在方法 equals(Object) 返回 true 时才返回 0。
这是字典排序的定义。如果这两个字符串不同,那么它们要么在某个索引处的字符不同(该索引对二者均为有效索引),要么长度不同,或者同时具备这两种情况。如果它们在一个或多个索引位置上的字符不同,假设 k 是这类索引的最小值;则在位置 k 上具有较小值的那个字符串(使用 < 运算符确定),其字典顺序在其他字符串之前。在这种情况下,compareTo 返回这两个字符串在位置 k 处两个char 值的差,即值: this.charAt(k)-anotherString.charAt(k)
如果没有字符不同的索引位置,则较短字符串的字典顺序在较长字符串之前。在这种情况下,compareTo 返回这两个字符串长度的差,即值:
this.length()-anotherString.length()
//a<b}
else{
//a>=b}
conn = pool.getConnection();
vo = new DataTranVo();
cmd = new WdCommon();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String pkid = (String) dt.strPk;
String jzmj = (String) dt.retForm.get("$jzmj");
String yymj = (String) dt.retForm.get("$yymj");
/////
String sql = "";
String params[] = {};
try {
boolean allowadd = ///;
if (allowadd) {
QueryRunner qr = new QueryRunner();
qr.update(conn, sql, params);
boolean issuccess = cmd.CommonSetLog();
if (issuccess) {
DbUtils.commitAndClose(conn);
dt.sMessage = "网点基本信息修改成功!";
} else {
DbUtils.rollbackAndClose(conn);
dt.sMessage = "网点基本信息修改失败!";
}
} else {
dt.sMessage = "该单位已经存在代码为:" + wdbm + "的网点,请重新设置网点代码!";
DbUtils.close(conn);
}
vo.setDataTran(dt);
return vo;
} catch (Exception e) {
DbUtils.rollbackAndClose(conn);
dt.sMessage = "网点基本信息修改失败!";
e.printStackTrace();
vo.setDataTran(dt);
return vo;
}
}
if kssj.compareTo(jssj){
//
} else {
//
}这个我应该写在上面那段代码的什么地方?
//
} else {
//
}这个我应该写在上面那段代码的什么地方?
//
} else {
//
}这个我应该写在上面那段代码的什么地方?
======================================================
if (kssj.compareTo(jssj) <0){
doSomething;//代码增加在这里
} else {
//
}