`

数组和容器的排序

    博客分类:
  • J2SE
阅读更多

排序方法一:

package Stuty_Array;

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

public class User {
	private String id;
	private int age;
	
	public User(String id,int age){
		this.id = id;
		this.age = age;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public static void main(String[] args) {
		/**------数组排序------*/
//		User[] users = new User[]{new User("12",12),new User("50",50),new User("30",30)};
//		Arrays.sort(users,new UserComparator());
		
		/**------容器排序------*/
		List<User> users = new ArrayList<User>();
		users.add(new User("13",13));
		users.add(new User("40",40));
		users.add(new User("20",20));
		Collections.sort(users,new UserComparator());
		
		for(User u:users){
			System.out.println(u.getId());
		}
	}
	

}
class UserComparator implements Comparator<User>{
	@Override
	public int compare(User o1, User o2) {
		return o1.getAge()-o2.getAge();
	}
}

 

排序方法二:

package Stuty_Array;

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

public class Users implements Comparable<Users> {
	private String id;
	private int age;
	public Users(String id,int age){
		this.id = id;
		this.age = age;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	@Override
	public int compareTo(Users o) {
		return this.getAge() - o.getAge();
	}
	
	public static void main(String[] args) {
		/**-----数组排序-----*/
//		Users[] users = new Users[]{new Users("20",20),new Users("18",18),new Users("56",56)};
//		Arrays.sort(users);
		
		/**--------容器排序---------*/
		List<Users> users = new ArrayList<Users>();
		users.add(new Users("12",12));
		users.add(new Users("50",50));
		users.add(new Users("20",20));
		Collections.sort(users);
		
		for(Users u:users){
			System.out.println(u.getId());
		}
	}
	
}

  一个类实现了Camparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序。
Comparator可以看成一种算法的实现,将算法和数据分离,Comparator也可以在下面两种环境下使用:
1、类的设计师没有考虑到比较问题而没有实现Comparable,可以通过Comparator来实现排序而不必改变对象本身
2、可以使用多种排序标准,比如升序、降序等

分享到:
评论

相关推荐

    c++实现数组或容器排序

    c++实现数组或容器排序

    Windows程序设计题目三源代码+报告(排序演示过程)MFC

    题目三:排序演示过程 1、编程要求 1)动态生成自定义大小的数组,并以随机数初始化数组。...该题的难点在于数据结构和排序算法,涉及的集合类(容器)使用,以及在定时器和鼠标消息处理函数中的编写。

    插入排序的C++实现

    用C++实现的插入排序算法,其中并没有使用数组,而是使用了vector容器和迭代器。

    MFC_SORT_CODE.zip

    该题的难点在于数据结构和排序算法,涉及的集合类(容器)使用,以及在定时器和鼠标消息处理函数中的编写。 1) 常见的排序算法如下: 气泡排序 快速排序 折半插入排序 直接插入排序 希尔排序 直接选择排序...

    java编程练习题

    3、实现在一个数组指定位置添加元素和删除元素的功能。 1、数组容量问题? 2、添加元素前后数组中元素的变化 3、删除元素前后数组中元素的变化 面向对象章节作业 1,写一个类,名为Animal,该类有两个私有属性, ...

    leetcode530-Leetcode:力码

    查找排序数组中元素的首尾位置 704二分查找 981 基于时间的键值存储 33 在旋转排序数组中搜索 81 在旋转排序数组中搜索 II 第153话 第154话 852 山峰指数 69 平方英尺(x) 74 搜索一个二维矩阵 第875章 可可吃香蕉 ...

    Java容器.xmind

    对键进行排序 HashTable 标记: class Properties 标记: class 线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。 Collections 标记: 均以synchronized实现, 性能没用提高 synchronizedCollection...

    C++ STL开发技术导引(第5章)

    5.2 内存分配器和容器 74 5.2.1 内存分配器 75 5.2.2 容器 77 5.3 概念 82 5.3.1 基础性概念 82 5.3.2 容器概念 84 5.3.3 迭代器概念 86 5.3.4 函数对象概念 88 5.4 本章小结 89 第三篇 C++ STL...

    leetcode数组中元素出现次数-Interview-Prepration:包含重要问题和面试概念的存储库

    从排序数组中删除重复项 删除元素 下一个排列 在旋转排序数组中搜索 搜索插入位置 截留雨水 旋转图像 分组字谜 最大子阵列 帕斯卡三角形 买卖股票的最佳时机 II 有效回文 单号 最小堆栈 岛屿数量 快乐号 包含重复 ...

    leetcode双人赛-leetcode-go:leetcode-go

    在排序数组中查找元素的第一个和最后一个位置 搜索插入位置 有效的数独 外观数列 接雨水 合并区间 螺旋矩阵 II 加一 搜索二维矩阵 颜色分类 组合 柱状图中最大的矩形 合并两个有序数组 杨辉三角 杨辉三角 II 买卖...

    javascript入门笔记

    用来存储数据的一个容器 2、声明变量(重点) 1、声明变量 var 变量名; 2、为变量赋值 变量名=值; 3、声明变量并赋初始值 var 变量名=值; 注意: 1、变量在声明时没有赋值的话,那么值为 undefined 2、声明...

    stl常用算法(Algorithms)介绍(stl排序算法、非变序型队列)

    算法:用来处理群集内的元素。它们可以出于不同的目的而搜寻,排序,修改,使用那些元素。... 3)排序值算法:包涵对容器中的值进行排序和合并的算法,还有二叉搜索算法 ,4)通用数值算法:此种算法不多,涉及到专业

    扩展矩阵leetcode-LeetCoding:LeetCode实况/Kotlin/一直刷题一直爽

    扩展矩阵leetcode LeetCoding LeetCode实况/kotlin/一直刷题一直爽 注:带*号的有待完善 LeetCode题集 序号 题目 难度 分类 标签 ...两数之和 ...数组 ...数组 ...盛最多水的容器 ...在排序数组中查找元素的第一个

    react-native-sortable-list:React Native可排序列表组件

    可排序列表视图,用于本机... (对象,数组)这些样式将应用于内部滚动视图内容容器,但不包括页眉和页脚水平的? (布尔值)为true时,SortableList的子级水平排列成一行,而不是垂直排列成一列。 默认值为false。

    Java学习过程中应该理解的一些重点内容

    容器是Java编程的一大利器,常用的类是:ArrayList (List)作为可变长数组、HashMap(Map)用来建立查找表,Set很少用,只在HashMap的使用中连带用过一些。通过对这两个类的熟悉,能够将List、Set和Map三大类的基本用法...

    leetcode安卓-leetcode_alg_practice:在LeetCode上破解1049个算法问题!(自2020-02-28)

    leetcode安卓 leetcode_alg_practice ,2020-02-28 ,2020-03-02 ,2020-03-05 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 ...盛最多水的容器 ...在排序数组中查找元素的第一个和最后一个位置 0035 搜

    STL入门快速入门教程-----学习C++

    例如find可以用来在容器中查找某特定值的元素,for_each可以用来将函数应用到容器元素之上,sort用于对容器中的元素排序。 8;迭代器(iterators)STL重要组成部分,每个容器都有自己的迭代器,只有容器才可以进行...

    leetcode有效期-LeetCode:力码

    在排序数组中查找元素的第一个和最后一个位置 36 有效的数独 39 数组总和 Hard 4 寻找两个正序数组中的中位数 10 正则表达式匹配 23 合并K个升序链表 25 K个一组翻转链表 30 串联所有单词的子串 32 最长有效括号 37 ...

    lrucacheleetcode-PrePlacePrep:GeeksforGeeks和LeetCode重要的编码问题

    合并两个已排序的数组 交替重新排列数组 对数 数组的反转 对 0、1 和 2 的数组进行排序 平衡点 阵列中的领导者 最低平台 按组反转数组 第 K 个最小元素 截留雨水 勾股三元组 巧克力分配问题 股票买卖 左侧较小右侧较...

Global site tag (gtag.js) - Google Analytics