`

java 中对象比较大小

阅读更多
java 中对象比较大小

java 中对象比较大小有两种方法
1:实现Comparable 接口 的 public int compareTo(T o) 方法;

2:实现Comparator 接口 的   int compare(T o1, T o2)方法;

代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class Test {
	public static void main(String[] args) {
		List list =new ArrayList();
		list.add(new Dept("2","研发部",23));
		list.add(new Dept("2","总公司",575));
		list.add(new Dept("2","总公司",565));
//		Collections.sort(list);
		Collections.sort(list, new Comparator(){

			public int compare(Object arg0, Object arg1) {
				// TODO Auto-generated method stub
				Dept dept1=(Dept)arg0;
				Dept dept2=(Dept)arg1;
				return dept1.compareTo(dept2);
			}
			
		});
		
		for (int i=0;i<list.size();i++){
			System.out.println((Dept)list.get(i));
		}
		
		
		Dept dept1=new Dept("2","研发部",23);
		Dept dept2=new Dept("2","kk",44);
		Set set=new TreeSet(new Comparator(){

			public int compare(Object arg0, Object arg1) {
				// TODO Auto-generated method stub
				return 0;
			}
			
		});
		set.add(dept1);
		set.add(dept2);
		
	
	}
}

class Dept implements Comparable{
	private String id;
	private String name;
	private long num;
	public Dept(String id,String name,long num){
		this.id=id;
		this.name=name;
		this.num=num;
	}
	public String getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public long getNum() {
		return num;
	}

	public void setNum(long num) {
		this.num = num;
	}

	public int compareTo(Object arg0) {
		Dept dept=(Dept) arg0;
		int i=0;
		i=this.id.compareTo(dept.id);
		if(i!=0){//部门id不相等
			return i;
		}else{//部门id相等
			i=this.name.compareTo(dept.name);
			if(i!=0){//部门名称不相等
				return i;
			}else{//部门名称不相等
				if(this.num>dept.num)return 1;
				else if(this.num<dept.num)return -1;
				else return 0;
			}
		}
		
	}
	public String toString() {
		// TODO Auto-generated method stub
		return this.id+"-->"+this.name+"-->"+this.num;
	}

}


分享到:
评论

相关推荐

    计算java对象大小

    总结来说,理解Java对象大小的计算对于优化内存使用、防止内存泄漏以及提高应用程序性能至关重要。开发人员需要了解不同方法的优缺点,并根据实际需求选择合适的方式。同时,应当注意,过于关注单个对象的大小可能...

    java 通过sizeOf计算一个对象的大小

    但是,Java API本身并不提供直接获取对象大小的方法。为了计算对象大小,我们需要借助一些第三方库或者自行实现。 一个常见的第三方库是`DeepSizeOf`,它来自Eclipse Collections框架,提供了类似于C++中的`sizeof`...

    java 对象 内存 大小

    当我们谈论“Java对象内存大小”时,我们通常指的是一个Java对象在内存中占据的空间,包括对象头、实例字段以及可能的对齐填充。这个知识点对于开发高效缓存系统尤其重要,因为缓存需要精确管理内存来最大化存储效率...

    计算java对象的大小的方法

    本文将深入探讨如何计算Java对象的大小,以及这个知识点在实际开发中的应用。 首先,Java对象的大小不仅仅包括其字段的大小,还包括对象头(object header)的大小,对于HotSpot虚拟机,它包含了对齐填充、Mark ...

    JAVA对象所占内存大小计算例子

    通过`Unsafe`类或`Instrumentation`接口,我们可以获取这些组成部分的具体大小,进而了解一个Java对象在内存中的占用情况。这样的知识对于优化内存使用、排查性能问题和理解JVM内存模型具有重要意义。

    测量Java对象大小的demo

    本示例“测量Java对象大小的demo”提供了一种方法,通过使用Java的`java.lang.instrument`包来注入`javaagent`,进而利用`Instrumentation`接口测量Java对象的精确内存占用。下面我们将详细探讨这一过程。 首先,`...

    计算一个Java对象占用字节数的方法

    首先,Java对象在堆内存中由四个部分组成:对象头(A)、基本类型域(B)、引用类型域(C)和填充物(D)。 **对象头(A)**: 对象头包含了对象的元数据,如对象实例的名字、唯一标识(对象ID)以及对象的状态信息...

    统计缓存(java对象所占的内存)大小

    总的来说,理解Java对象在内存中的表示方式和占用空间,结合合适的工具进行监控,是开发高效、稳定的Java应用的基础。通过深入学习这些知识点,开发者可以更好地优化程序,提高系统资源利用率,避免因内存问题导致的...

    Java 面向对象 练习题与答案

    Font 类是 Java 中的一个类,用于设置程序中的字体实例对象。 Font 类有三个参数:face、style、size,分别指字体的外观、样式和大小。我们可以使用 Font 类的静态方法 getFont() 创建 Font 对象,例如:Font font =...

    java SizeOf 对象的大小

    NULL 博文链接:https://spice.iteye.com/blog/1104340

    java中的栈(深层了解java虚拟机对对象的内存分布)

    ### 深层解析Java虚拟机中的栈与堆:对象的内存分布 #### 核心概念:栈与堆的本质及作用 在Java编程语言中,理解栈(stack)和堆(heap)的概念及其工作原理对于深入掌握Java虚拟机(JVM)如何管理内存至关重要。栈和堆...

    Java字符串转换为日期和时间比较大小[归类].pdf

    Java 字符串转换为日期和时间比较大小是 Java 开发中常见的操作。下面我们将详细介绍两种方法来实现 Java 字符串转换为日期和时间比较大小。 方法一:使用 SimpleDateFormat 在 Java 中,SimpleDateFormat 是一个...

    测试java对象占用内存大小的例子

    总结来说,这个例子旨在帮助开发者理解Java对象在内存中的表示方式,以及不同类型和结构的对象如何影响内存使用。通过这种方式,开发者可以优化代码,减少不必要的内存开销,提高应用程序的效率。同时,这也提醒我们...

    Java对象的比较方式.doc

    在Java编程中,对象的比较和排序是常见的需求,特别是在处理集合时。Java提供了两种主要的方式来实现对象之间的比较,即`Comparable`接口和`Comparator`接口。这两种接口使得自定义对象可以根据特定的规则进行排序。...

    java-sizeof-0.0.4:一个查看java对象占用内存大小

    本文将深入探讨Java中的对象内存占用,以及如何使用"java-sizeof-0.0.4"工具来查看Java对象在内存中的大小。 在Java中,内存主要分为堆内存(Heap)和栈内存(Stack)。对象通常存储在堆内存中,而基本类型的变量和...

    java 按字母顺序比较大小

    在Java编程语言中,对字符串进行按字母顺序比较大小是一项常见的任务。这主要涉及到字符串排序、字符比较以及字符串操作的相关知识。以下是对这个主题的详细解释: 首先,我们需要理解Java中的字符串是不可变对象,...

    Java类对象比较分析.pdf

    在类 A 的定义中,compareTo 方法中的比较规则就表示了类 A 对象的大小比较规则,即当属性 x 与 y 的和值相等时两个对象相等,当和值大时则对应的对象大,否则对应的对象就小。 三、 String 类对象比较分析 String...

    JAVA对象以及数据的工具类

    本篇文章将深入探讨Java中的对象、基础类型以及数据处理相关的工具类。 首先,让我们关注Java中的基础类型。Java有八种原始数据类型:byte、short、int、long、float、double、char和boolean。为了方便处理这些类型...

    Java面向对象五子棋

    在这个名为“Java面向对象五子棋”的项目中,我们有两个使用Java实现的五子棋小游戏源码,它们完全遵循面向对象的原则,可以为学习者提供启发和实践机会。 在面向对象编程中,类是核心概念,它是对现实世界中事物的...

    java内存对象分配过程研究

    3. **对齐填充(Padding)**:由于虚拟机要求对象起始地址必须是8字节的整数倍,填充是为了让对象大小符合这一要求而存在的。 #### 五、对象初始化过程 对象初始化是构造对象的最后一步,它包括以下几个方面: 1. *...

Global site tag (gtag.js) - Google Analytics