48- java Arrays.sort和collections.sort()再次总结
今天又碰到一个新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()再次总结的更多相关文章
- Arrays.sort 与 Collections.sort
代码如下: package com.wangzhu.arrays; import java.util.Arrays; import java.util.Collections; public clas ...
- Arrays.sort和Collections.sort实现原理解析
Arrays.sort和Collections.sort实现原理解析 1.使用 排序 2.原理 事实上Collections.sort方法底层就是调用的array.sort方法,而且不论是Collec ...
- Java中Arrays.sort()和Collections.sort()
1.简单示例 sort方法的使用非常的简单明了,下面的例子中,先定义一个比较Dog大小的Comparator,然后将其实例对象作为参数传给sort方法,通过此示例,你应该能够快速掌握Arrays.so ...
- 39-java中Arrays.sort 和 collections.sort()总结
总结一下java 中的两种排序工具: Arrays.sort() : 主要针对 数组类型排序,如果数组里面的元素是对象,要按对象属性排序的话,需要重写 Comparator() 函数,重写里面的 i ...
- Java基础集锦——利用Collections.sort方法对list排序
要想对List进行排序,可以让实体对象实现Comparable接口,重写compareTo方法即可实现按某一属性排序,但是这种写法很单一,只能按照固定的一个属性排序,没变法变化.通过下面这种方法,可以 ...
- 用Java集合中的Collections.sort方法对list排序的两种方法
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- sort()排序 collections.sort();
1.main方法: public class Test { public static void main(String[] args) { /** * * sort()方法详解 * 1.Collec ...
- java Arrays.asList()和Collections.addAll()
java中的方法Arrays.asList(arg1,arg2,arg3...),经常用在将多个元素或数组转化为List中的元素,但是在使用的时候,应该注意: arg1决定返回list的元素类型(即第 ...
- Java中Collections.sort()排序详解
public static void main(String[] args) { List<String> list = new ArrayList<String>(); ...
随机推荐
- redis 的备份策略,最好使用:RDB-AOF 混合持久化
相关资料: Redis 4.0 新功能简介:RDB-AOF 混合持久化:http://blog.huangz.me/2017/redis-rdb-aof-mixed-persistence.html ...
- 域名到站点的负载均衡技术一览(主要是探讨一台Nginx抵御大并发的解决方案)(转)https://www.cnblogs.com/EasonJim/p/7823410.html
一.问题域 Nginx.LVS.Keepalived.F5.DNS轮询,往往讨论的是接入层的这样几个问题: 1)可用性:任何一台机器挂了,服务受不受影响 2)扩展性:能否通过增加机器,扩充系统的性能 ...
- WebApi 序列化 循环引用问题
public static void Register(HttpConfiguration config) { // Web API 配置和服务 config.Formatters.Remove(co ...
- 如何在同一主机中添加多个homestead并行开发
参考源 https://blog.csdn.net/smm188/article/details/79356150 1,在项目目录 git clone homestead 后(见上面流程中的第四步), ...
- ubuntu16.04下docker安装和简单使用
前提条件 操作系统 docker-ce支持的ubuntu版本: Bionic 18.04 (LTS) Xenial 16.04 (LTS) Trusty 14.04 (LTS) 卸载旧版本docker ...
- Laravel常见问题集锦
1.提示:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes? ...
- 修改java在进程中的映像名
java小程序用java -jar xxx.jar 启动的进程映像名都是java.exe. 如果启动多个小程序就不好区分,导致监控程序无法定位到具体需要守护的小程序上. 解决办法: 在java安装目 ...
- kettle数据库连接使用变量
新增db连接(密码也可以设置参数) 转换中,右键空白处,选择转换设置
- 一个判断I2C总线通信异常原因的方法
此问题由某客户提出,应用处理器 AP与 MCU进行 I2C通信,通信会经常发生异常,需要定位原因. 首先需要定位的是因为哪个器件发的波形不正确导致通信异常,所以我们在 I2C 线路上增加了以下处理,增 ...
- python中的re模块——正则表达式
re模块:正则表达式 正则表达式:为匹配字符 import re #导入re模块 #re.findall('正则表达式','被匹配字符') re模块下findall用法 在正则表达式中: \w 表示匹 ...