今天又碰到一个新BUG,记下来。

一直报空指针异常,我就很奇怪了,怎么就空指针了呢,我输出时,也能输出东西呀。

原来Arrays.sort() 和 Collections.sort() 都是对整个数组或者链表进行排序的,也就是整个数组或者链表有多长就会进行多长的排序。

而我new的数组时30,而真正new的对象只有20个,故后10个对象没有实例化,而排序比较时有用到,故会报空指针异常。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner; public class Main
{
public static <T> void main(String[] args) {
Scanner cin = new Scanner(System.in); // 对象链表排序
List<People> list = new ArrayList<People>(); for(int i = 0; i < 20; i++) {
list.add(new People(20 - i, "ys" + i));
} Collections.sort(list, new Comparator<People>() {
@Override
public int compare(People arg0, People arg1) {
// TODO Auto-generated method stub
return arg0.age - arg1.age;
}
}); for(int i = 0; i < 20; i++) {
System.out.println(list.get(i).age + list.get(i).name);
} // 对象数组排序
People[] peos = new People[20]; for(int i = 0; i < 20; i++) {
peos[i] = new People(20 - i, "; song-" + i);
}
Arrays.sort(peos, new Comparator<People>() { @Override
public int compare(People o1, People o2) {
// TODO Auto-generated method stub
System.out.println(o1.name);
return o1.age - o2.age;
} }); System.out.println("===================");
for(int i = 0; i < 20; i++) {
System.out.println(peos[i].age + peos[i].name);
}
}
} class People{
int age;
String name;
People(int age, String name){
this.age = age;
this.name = name;
}
}

  

48- java Arrays.sort和collections.sort()再次总结的更多相关文章

  1. Arrays.sort 与 Collections.sort

    代码如下: package com.wangzhu.arrays; import java.util.Arrays; import java.util.Collections; public clas ...

  2. Arrays.sort和Collections.sort实现原理解析

    Arrays.sort和Collections.sort实现原理解析 1.使用 排序 2.原理 事实上Collections.sort方法底层就是调用的array.sort方法,而且不论是Collec ...

  3. Java中Arrays.sort()和Collections.sort()

    1.简单示例 sort方法的使用非常的简单明了,下面的例子中,先定义一个比较Dog大小的Comparator,然后将其实例对象作为参数传给sort方法,通过此示例,你应该能够快速掌握Arrays.so ...

  4. 39-java中Arrays.sort 和 collections.sort()总结

    总结一下java 中的两种排序工具: Arrays.sort() : 主要针对 数组类型排序,如果数组里面的元素是对象,要按对象属性排序的话,需要重写 Comparator() 函数,重写里面的  i ...

  5. Java基础集锦——利用Collections.sort方法对list排序

    要想对List进行排序,可以让实体对象实现Comparable接口,重写compareTo方法即可实现按某一属性排序,但是这种写法很单一,只能按照固定的一个属性排序,没变法变化.通过下面这种方法,可以 ...

  6. 用Java集合中的Collections.sort方法对list排序的两种方法

    用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  7. sort()排序 collections.sort();

    1.main方法: public class Test { public static void main(String[] args) { /** * * sort()方法详解 * 1.Collec ...

  8. java Arrays.asList()和Collections.addAll()

    java中的方法Arrays.asList(arg1,arg2,arg3...),经常用在将多个元素或数组转化为List中的元素,但是在使用的时候,应该注意: arg1决定返回list的元素类型(即第 ...

  9. Java中Collections.sort()排序详解

      public static void main(String[] args) { List<String> list = new ArrayList<String>(); ...

随机推荐

  1. redis 的备份策略,最好使用:RDB-AOF 混合持久化

    相关资料: Redis 4.0 新功能简介:RDB-AOF 混合持久化:http://blog.huangz.me/2017/redis-rdb-aof-mixed-persistence.html ...

  2. 域名到站点的负载均衡技术一览(主要是探讨一台Nginx抵御大并发的解决方案)(转)https://www.cnblogs.com/EasonJim/p/7823410.html

    一.问题域 Nginx.LVS.Keepalived.F5.DNS轮询,往往讨论的是接入层的这样几个问题: 1)可用性:任何一台机器挂了,服务受不受影响 2)扩展性:能否通过增加机器,扩充系统的性能 ...

  3. WebApi 序列化 循环引用问题

    public static void Register(HttpConfiguration config) { // Web API 配置和服务 config.Formatters.Remove(co ...

  4. 如何在同一主机中添加多个homestead并行开发

    参考源 https://blog.csdn.net/smm188/article/details/79356150 1,在项目目录 git clone homestead 后(见上面流程中的第四步), ...

  5. ubuntu16.04下docker安装和简单使用

    前提条件 操作系统 docker-ce支持的ubuntu版本: Bionic 18.04 (LTS) Xenial 16.04 (LTS) Trusty 14.04 (LTS) 卸载旧版本docker ...

  6. Laravel常见问题集锦

    1.提示:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes? ...

  7. 修改java在进程中的映像名

    java小程序用java -jar xxx.jar  启动的进程映像名都是java.exe. 如果启动多个小程序就不好区分,导致监控程序无法定位到具体需要守护的小程序上. 解决办法: 在java安装目 ...

  8. kettle数据库连接使用变量

    新增db连接(密码也可以设置参数) 转换中,右键空白处,选择转换设置

  9. 一个判断I2C总线通信异常原因的方法

    此问题由某客户提出,应用处理器 AP与 MCU进行 I2C通信,通信会经常发生异常,需要定位原因. 首先需要定位的是因为哪个器件发的波形不正确导致通信异常,所以我们在 I2C 线路上增加了以下处理,增 ...

  10. python中的re模块——正则表达式

    re模块:正则表达式 正则表达式:为匹配字符 import re #导入re模块 #re.findall('正则表达式','被匹配字符') re模块下findall用法 在正则表达式中: \w 表示匹 ...