当前位置: 首页 > news >正文

郑州小型网站制作公司玉溪seo

郑州小型网站制作公司,玉溪seo,设计学分类,建设学分银行网站策划书一.java中的compareto方法 1.返回参与比较的前后两个字符串的asc码的差值,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值 String a1 “a”; String a2 “c”; System.out.println(a1.compareTo(a2));//结果为-2 2.即参与比较的两个字符…

一.java中的compareto方法

1.返回参与比较的前后两个字符串的asc码的差值,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值

String a1 = “a”;
String a2 = “c”;
System.out.println(a1.compareTo(a2));//结果为-2

2.即参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值,

String a1 = “aa”;
String a2 = “ad”;
System.out.println(a1.compareTo(a2));//结果为-3
3.如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值

String a1 = “aa”;
String a2 = “aa12345678”;
System.out.println(a1.compareTo(a2));//结果为-8
4.返回为正数表示a1>a2, 返回为负数表示a1<a2, 返回为0表示a1==a2;

5.数字类型不能用compareTo,nt跟int的比较不能用compareTo方法,直接用大于(>) 小于(<) 或者 等于(==) 不等于(!=)来比较即可

int num1 = 4;
int num2 = 5;
num1.compareTo(num2);//Cannot invoke compareTo(int) on the primitive type int
你可以先把你的int型变量转换成String再进行比较

复制代码
     int num1 = 4;
int num2 = 5;

    //parse int to String    System.out.println((num1+"").compareTo(num2+""));//-1System.out.println(new Integer(num1).toString(). compareTo(new Integer(num2).toString()));//-1System.out.println(String.valueOf(num1).compareTo(String.valueOf(num2)));//-1

复制代码
6.compareToIgnoreCase忽略大小写

不考虑大小写,按字典顺序比较两个字符串。此方法返回一个整数,它的正负号是调用 compareTo 的正负号,调用时使用了字符串的规范化版本,其大小写差异已通过对每个字符调用 Character.toLowerCase(Character.toUpperCase(character)) 得以消除。
注意,此方法不 考虑语言环境,因此可能在某些特定的语言环境中产生不理想的排序。java.text 包提供 Collators 来完成语言环境敏感的排序。

7.int型可以直接比较,所以没有用到compareTo比较,如果声明的是Date、String、Integer、或者其他的,可以直接使用compareTo比较,

  Integer n1 = 5;Integer n2 = 6;System.out.println(n1.compareTo(n2));//-1        

二. Comparable接口中的compareTo

compareTo方法内必须做非空判断(规范问题),当然int类型就不用了。

注意事项:

1、模型必须实现Comparable接口

2、Collection.sort(list)会自动调用compareTo,如果没有这句,list是不会排序的,也不会调用compareTo方法

3、如果是数组则用Arrays.sort(a)方法

注意要非空判断,这里实例就不判断了

复制代码
  private int bookId;

private String bookName;private int bookPrice;@Override
public int compareTo(Book o) {// TODO Auto-generated method stub//return this.bookPrice-o.bookPrice;//按价格排序 升序
//return o.bookPrice-this.bookPrice;//按价格排序 降序//return this.bookName.compareTo(o.bookName);//按书名排序 升序//先按 id 再按价格 最后按书名排序 升序int result = this.bookId - o.bookId;if(result == 0){result =this.bookPrice - o.bookPrice;}if(result == 0){result = this.bookName.compareTo(o.bookName);}        return result;}

复制代码
复制代码
package com.my.test.compare;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class TestCompare {
public static void main(String[] args) {
Book b1 = new Book(1, “语文”, 20);
Book b2 = new Book(2, “数学”, 10);
Book b3 = new Book(5, “英语”, 10);
Book b4 = new Book(4, “化学”, 50);
Book b5 = new Book(3, “化学”, 10);
//Book b6 = null;//不能为null,Collections.sort调用compareTo会报空指针异常

    List<Book> books = new ArrayList<>();         books.add(b1);books.add(b2);books.add(b3);books.add(b4);books.add(b5);System.out.println("Collections 排序前");for (Book book : books) {System.out.println(book);}Collections.sort(books);System.out.println("Collections 排序后");for (Book book : books) {System.out.println(book);}Book[] b = new Book[5];System.out.println(b.length);b[0] = b1;b[1] = b2;b[2] = b3;b[3] = b4;b[4] = b5;System.out.println("Arrays 排序前" );for (Book book : b) {System.out.println(book);}Arrays.sort(b);System.out.println("Arrays 排序后" );for (Book book : b) {System.out.println(book);}}

}
复制代码
在应用中我们为了好判断状态,一般处理为

复制代码
    if(this.bookId<o.bookId){
return -1;
}else if(this.bookId>o.bookId){
return 1;
}else{
return 0;
}
复制代码

返回值为 1,0.-1:

三。 Comparator接口

源码:

复制代码
@FunctionalInterface
public interface Comparator {
// 核心方法,用来比较两个对象,如果o1小于o2,返回负数;等于o2,返回0;大于o2返回正数
int compare(T o1, T o2);
// 好像很少用到,一般都用对象自带的equals
boolean equals(Object obj);

/**-----------下面的都是JDK1.8新增的接口,挑几个放进去----------*/

//返回反向排序比较器
default Comparator reversed() {
return Collections.reverseOrder(this);
}
//根据名字知道,先进行compare比较后,再进行一次比较
default Comparator thenComparing(Comparator<? super T> other) {
Objects.requireNonNull(other);
return (Comparator & Serializable) (c1, c2) -> {
int res = compare(c1, c2);
return (res != 0) ? res : other.compare(c1, c2);
};
}
//对int类型的key进行比较
public static Comparator comparingInt(ToIntFunction<? super T> keyExtractor) {
Objects.requireNonNull(keyExtractor);
return (Comparator & Serializable)
(c1, c2) -> Integer.compare(keyExtractor.applyAsInt(c1), keyExtractor.applyAsInt(c2));
}
//返回正常顺序的比较器
public static <T extends Comparable<? super T>> Comparator naturalOrder() {
return (Comparator) Comparators.NaturalOrderComparator.INSTANCE;
}
}
复制代码
一起来看一下如何使用,先来看一下JDK1.8以前的用法:

复制代码
Collections.sort(books,new Comparator() {

        @Overridepublic int compare(Book o1, Book o2) {// TODO Auto-generated method stubreturn o1.getBookPrice() - o2.getBookPrice();}});

复制代码
或者创建一个比较器

复制代码
package com.my.test.compare;

import java.util.Comparator;

public class SimpleCompator implements Comparator {

@Override
public int compare(Book o1, Book o2) {// TODO Auto-generated method stubreturn o1.getBookPrice() -o2.getBookPrice();
}

}
复制代码

Collections.sort(books,new SimpleCompator());
JDK1.8以前的用法要自己手动实现Comparator接口,然后调用Collections.sort(),传入实现类来完成排序,非常麻烦,而JDK1.8则相对来说简单了很多:

    Collections.sort(books,(Book a, Book b) -> { return a.getBookPrice()-b.getBookPrice(); });

或者可以简单的写为

    Collections.sort(books,(Book a, Book b) ->  a.getBookPrice()-b.getBookPrice());

甚至,我们可以不使用Collections.sort:

books.sort((Book a, Book b) -> a.getBookPrice()-b.getBookPrice() );
详见:http://www.manongjc.com/article/8005.html

compator 在 treeMap 中的 应用(基于key的排序):

treeMap默认的是基于key的从小到大 的排列

自定义排序也是基于key的,如果key object类型 可以自定义各种排序

        TreeMap<String, Person> treeMap = new TreeMap<>((String a,String b)-> b.compareTo(a));//降序TreeMap<String, Person> treeMap = new TreeMap<>((String a,String b)-> a.compareTo(b));//升序

TreeMap的按value排序(转换成entry list 然后排序)汉字是按ascii码排序的,不是汉语拼音

复制代码
Person p1 = new Person(1, “A小红”);
Person p2 = new Person(5, “D赵明”);
Person p3 = new Person(2, “W孙宇”);
Person p4 = new Person(9, “C黎明”);

    TreeMap<String, Person> treeMap = new TreeMap<>();treeMap.put("45", p1);treeMap.put("12", p2);treeMap.put("85", p3);treeMap.put("33", p4);List<Map.Entry<String, Person>> entries = new ArrayList<>(treeMap.entrySet());Collections.sort(entries,(Map.Entry<String, Person> e1, Map.Entry<String, Person> e2) -> ((Person) e1.getValue()).getPersonName().compareTo(((Person) e2.getValue()).getPersonName()));System.out.println("按名字顺序排列");for (Entry<String, Person> entry : entries) {System.out.println(entry.getValue());}

一.java中的compareto方法

1.返回参与比较的前后两个字符串的asc码的差值,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值

String a1 = “a”;
String a2 = “c”;
System.out.println(a1.compareTo(a2));//结果为-2

2.即参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值,

String a1 = “aa”;
String a2 = “ad”;
System.out.println(a1.compareTo(a2));//结果为-3
3.如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值

String a1 = “aa”;
String a2 = “aa12345678”;
System.out.println(a1.compareTo(a2));//结果为-8
4.返回为正数表示a1>a2, 返回为负数表示a1<a2, 返回为0表示a1==a2;

5.数字类型不能用compareTo,nt跟int的比较不能用compareTo方法,直接用大于(>) 小于(<) 或者 等于(==) 不等于(!=)来比较即可

int num1 = 4;
int num2 = 5;
num1.compareTo(num2);//Cannot invoke compareTo(int) on the primitive type int
你可以先把你的int型变量转换成String再进行比较

复制代码
     int num1 = 4;
int num2 = 5;

    //parse int to String    System.out.println((num1+"").compareTo(num2+""));//-1System.out.println(new Integer(num1).toString(). compareTo(new Integer(num2).toString()));//-1System.out.println(String.valueOf(num1).compareTo(String.valueOf(num2)));//-1

复制代码
6.compareToIgnoreCase忽略大小写

不考虑大小写,按字典顺序比较两个字符串。此方法返回一个整数,它的正负号是调用 compareTo 的正负号,调用时使用了字符串的规范化版本,其大小写差异已通过对每个字符调用 Character.toLowerCase(Character.toUpperCase(character)) 得以消除。
注意,此方法不 考虑语言环境,因此可能在某些特定的语言环境中产生不理想的排序。java.text 包提供 Collators 来完成语言环境敏感的排序。

7.int型可以直接比较,所以没有用到compareTo比较,如果声明的是Date、String、Integer、或者其他的,可以直接使用compareTo比较,

  Integer n1 = 5;Integer n2 = 6;System.out.println(n1.compareTo(n2));//-1        

二. Comparable接口中的compareTo

compareTo方法内必须做非空判断(规范问题),当然int类型就不用了。

注意事项:

1、模型必须实现Comparable接口

2、Collection.sort(list)会自动调用compareTo,如果没有这句,list是不会排序的,也不会调用compareTo方法

3、如果是数组则用Arrays.sort(a)方法

注意要非空判断,这里实例就不判断了

复制代码
  private int bookId;

private String bookName;private int bookPrice;@Override
public int compareTo(Book o) {// TODO Auto-generated method stub//return this.bookPrice-o.bookPrice;//按价格排序 升序
//return o.bookPrice-this.bookPrice;//按价格排序 降序//return this.bookName.compareTo(o.bookName);//按书名排序 升序//先按 id 再按价格 最后按书名排序 升序int result = this.bookId - o.bookId;if(result == 0){result =this.bookPrice - o.bookPrice;}if(result == 0){result = this.bookName.compareTo(o.bookName);}        return result;}

复制代码
复制代码
package com.my.test.compare;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class TestCompare {
public static void main(String[] args) {
Book b1 = new Book(1, “语文”, 20);
Book b2 = new Book(2, “数学”, 10);
Book b3 = new Book(5, “英语”, 10);
Book b4 = new Book(4, “化学”, 50);
Book b5 = new Book(3, “化学”, 10);
//Book b6 = null;//不能为null,Collections.sort调用compareTo会报空指针异常

    List<Book> books = new ArrayList<>();         books.add(b1);books.add(b2);books.add(b3);books.add(b4);books.add(b5);System.out.println("Collections 排序前");for (Book book : books) {System.out.println(book);}Collections.sort(books);System.out.println("Collections 排序后");for (Book book : books) {System.out.println(book);}Book[] b = new Book[5];System.out.println(b.length);b[0] = b1;b[1] = b2;b[2] = b3;b[3] = b4;b[4] = b5;System.out.println("Arrays 排序前" );for (Book book : b) {System.out.println(book);}Arrays.sort(b);System.out.println("Arrays 排序后" );for (Book book : b) {System.out.println(book);}}

}
复制代码
在应用中我们为了好判断状态,一般处理为

复制代码
    if(this.bookId<o.bookId){
return -1;
}else if(this.bookId>o.bookId){
return 1;
}else{
return 0;
}
复制代码

返回值为 1,0.-1:

三。 Comparator接口

源码:

复制代码
@FunctionalInterface
public interface Comparator {
// 核心方法,用来比较两个对象,如果o1小于o2,返回负数;等于o2,返回0;大于o2返回正数
int compare(T o1, T o2);
// 好像很少用到,一般都用对象自带的equals
boolean equals(Object obj);

/**-----------下面的都是JDK1.8新增的接口,挑几个放进去----------*/

//返回反向排序比较器
default Comparator reversed() {
return Collections.reverseOrder(this);
}
//根据名字知道,先进行compare比较后,再进行一次比较
default Comparator thenComparing(Comparator<? super T> other) {
Objects.requireNonNull(other);
return (Comparator & Serializable) (c1, c2) -> {
int res = compare(c1, c2);
return (res != 0) ? res : other.compare(c1, c2);
};
}
//对int类型的key进行比较
public static Comparator comparingInt(ToIntFunction<? super T> keyExtractor) {
Objects.requireNonNull(keyExtractor);
return (Comparator & Serializable)
(c1, c2) -> Integer.compare(keyExtractor.applyAsInt(c1), keyExtractor.applyAsInt(c2));
}
//返回正常顺序的比较器
public static <T extends Comparable<? super T>> Comparator naturalOrder() {
return (Comparator) Comparators.NaturalOrderComparator.INSTANCE;
}
}
复制代码
一起来看一下如何使用,先来看一下JDK1.8以前的用法:

复制代码
Collections.sort(books,new Comparator() {

        @Overridepublic int compare(Book o1, Book o2) {// TODO Auto-generated method stubreturn o1.getBookPrice() - o2.getBookPrice();}});

复制代码
或者创建一个比较器

复制代码
package com.my.test.compare;

import java.util.Comparator;

public class SimpleCompator implements Comparator {

@Override
public int compare(Book o1, Book o2) {// TODO Auto-generated method stubreturn o1.getBookPrice() -o2.getBookPrice();
}

}
复制代码

Collections.sort(books,new SimpleCompator());
JDK1.8以前的用法要自己手动实现Comparator接口,然后调用Collections.sort(),传入实现类来完成排序,非常麻烦,而JDK1.8则相对来说简单了很多:

    Collections.sort(books,(Book a, Book b) -> { return a.getBookPrice()-b.getBookPrice(); });

或者可以简单的写为

    Collections.sort(books,(Book a, Book b) ->  a.getBookPrice()-b.getBookPrice());

甚至,我们可以不使用Collections.sort:

books.sort((Book a, Book b) -> a.getBookPrice()-b.getBookPrice() );
详见:http://www.manongjc.com/article/8005.html

compator 在 treeMap 中的 应用(基于key的排序):

treeMap默认的是基于key的从小到大 的排列

自定义排序也是基于key的,如果key object类型 可以自定义各种排序

        TreeMap<String, Person> treeMap = new TreeMap<>((String a,String b)-> b.compareTo(a));//降序TreeMap<String, Person> treeMap = new TreeMap<>((String a,String b)-> a.compareTo(b));//升序

TreeMap的按value排序(转换成entry list 然后排序)汉字是按ascii码排序的,不是汉语拼音

复制代码
Person p1 = new Person(1, “A小红”);
Person p2 = new Person(5, “D赵明”);
Person p3 = new Person(2, “W孙宇”);
Person p4 = new Person(9, “C黎明”);

    TreeMap<String, Person> treeMap = new TreeMap<>();treeMap.put("45", p1);treeMap.put("12", p2);treeMap.put("85", p3);treeMap.put("33", p4);List<Map.Entry<String, Person>> entries = new ArrayList<>(treeMap.entrySet());Collections.sort(entries,(Map.Entry<String, Person> e1, Map.Entry<String, Person> e2) -> ((Person) e1.getValue()).getPersonName().compareTo(((Person) e2.getValue()).getPersonName()));System.out.println("按名字顺序排列");for (Entry<String, Person> entry : entries) {System.out.println(entry.getValue());}
http://www.yidumall.com/news/75717.html

相关文章:

  • 网站设计要先做图么网站友链
  • 贵州省城乡和建设厅网站首页如何学会推广和营销
  • 怎么建设个网站宣传软文案例
  • 做网站用模版宣传方式
  • jsp网站建设美食查关键词排名工具app
  • 攀枝花市三线建设博物馆网站网络营销方法有几种类型
  • 阿里巴巴上怎样做自己的网站2345手机浏览器
  • 怎么在境外做网站链接点击量软件
  • 行业网站建设的开发方案微信群推广网站
  • 个人推广网站秦皇岛seo优化
  • 建立网站的风险小程序推广接单平台
  • 移动网站建设方案成都自然排名优化
  • 一站式装修平台长沙专业竞价优化首选
  • 网站怎么做才有收录新媒体运营哪个培训机构好
  • 哪个网站做图片外链黄山seo
  • 金坛网站建设价格大连seo按天付费
  • 南昌seo关键词排名跟我学seo从入门到精通
  • 做网站app要多少钱网络营销的方式与手段
  • 湖北平台网站建设哪家好app推广80元一单
  • 做英文简历的网站百度搜索 手机
  • 凯里网站设计公司淄博搜索引擎优化
  • 做网站推广怎么定位客户我为什么不建议年轻人做销售
  • 企业网站项目的流程如何开发微信小程序
  • 永久免费的网站推荐百度上怎么注册店铺地址
  • wordpress 批量注册培训机构优化
  • 展示类网站建设热搜榜上2023年热搜
  • 如何用github做网站重庆seo优化推广
  • 爱心代码html简单上海seo培训中心
  • web网站开发软件有哪些百度竞价推广什么意思
  • python基础教程人民邮电出版社seo外链怎么做