- 浏览: 288092 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
86614009:
如何在service层,如何获取绑定到当前线程的entitna ...
使用spring的OpenEntityManagerInView -
yajunyajun2011:
好帖子 怎么没人顶呢
Java 正则表达式最大,最小匹配问题 -
xtuali:
能说明一下,你的nutch是哪个版本的吗?谢谢!
搜索引擎Nutch源代码研究之一 网页抓取(1) -
dongmusic:
需要学习这么多的东西,吐血中...
如何提高Java开发能力 -
jiminsc:
cool
LDAP 验证、添加、修改、删除(转)
转载的,试用过了,很好!
/** * 对List对象按照某个成员变量进行排序 * @param list List对象 * @param sortField 排序的属性名称 * @param sortMode 排序方式:ASC,DESC 任选其一 */ public static <T> void sortList(List<T> list, final String sortField, final String sortMode) { Collections.sort(list, new Comparator<T>() { @Override public int compare(T o1, T o2) { try { Class clazz = o1.getClass(); Field field = clazz.getDeclaredField(sortField); //获取成员变量 field.setAccessible(true); //设置成可访问状态 String typeName = field.getType().getName().toLowerCase(); //转换成小写 Object v1 = field.get(o1); //获取field的值 Object v2 = field.get(o2); //获取field的值 boolean ASC_order = (sortMode == null || "ASC".equalsIgnoreCase(sortMode)); //判断字段数据类型,并比较大小 if(typeName.endsWith("string")) { String value1 = v1.toString(); String value2 = v2.toString(); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("short")) { Short value1 = Short.parseShort(v1.toString()); Short value2 = Short.parseShort(v2.toString()); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("byte")) { Byte value1 = Byte.parseByte(v1.toString()); Byte value2 = Byte.parseByte(v2.toString()); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("char")) { Integer value1 = (int)(v1.toString().charAt(0)); Integer value2 = (int)(v2.toString().charAt(0)); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("int") || typeName.endsWith("integer")) { Integer value1 = Integer.parseInt(v1.toString()); Integer value2 = Integer.parseInt(v2.toString()); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("long")) { Long value1 = Long.parseLong(v1.toString()); Long value2 = Long.parseLong(v2.toString()); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("float")) { Float value1 = Float.parseFloat(v1.toString()); Float value2 = Float.parseFloat(v2.toString()); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("double")) { Double value1 = Double.parseDouble(v1.toString()); Double value2 = Double.parseDouble(v2.toString()); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("boolean")) { Boolean value1 = Boolean.parseBoolean(v1.toString()); Boolean value2 = Boolean.parseBoolean(v2.toString()); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("date")) { Date value1 = (Date)(v1); Date value2 = (Date)(v2); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else if(typeName.endsWith("timestamp")) { Timestamp value1 = (Timestamp)(v1); Timestamp value2 = (Timestamp)(v2); return ASC_order ? value1.compareTo(value2) : value2.compareTo(value1); } else { //调用对象的compareTo()方法比较大小 Method method = field.getType().getDeclaredMethod("compareTo", new Class[]{field.getType()}); method.setAccessible(true); //设置可访问权限 int result = (Integer)method.invoke(v1, new Object[]{v2}); return ASC_order ? result : result*(-1); } } catch (Exception e) { String err = e.getLocalizedMessage(); System.out.println(err); e.printStackTrace(); } return 0; //未知类型,无法比较大小 } }); }
发表评论
-
算法的力量
2012-12-04 13:57 667算法的力量 2006年5月 ... -
Interface和抽象类的应用
2012-09-23 19:36 787一个类可以(继承)实 ... -
linux下java开发应掌握的命令
2012-09-23 19:22 1117java开发,由于其很多应用都是发布在Linux操作系统上,因 ... -
排序算法(四)快速排序(C++)
2012-09-11 17:10 3214快速排序,从最低位和最高位开始。 #include < ... -
查找算法(一)二分查找法
2012-09-01 14:59 851package com.algorithm.sort; ... -
排序算法(三)二分查找插入排序
2012-09-01 14:57 994package com.algorithm.sort; ... -
(排序算法二)合并排序
2012-08-26 22:01 1230自己写的,欢迎拍砖! public class MergeS ... -
(排序算法一)插入排序
2012-08-26 22:00 877自己写的,欢迎拍 public class Insert ... -
Java程序员面试中的多线程问题
2012-06-01 16:55 9170.Java 中多线程同步是什 ... -
VIPS:基于视觉的Web页面分页算法
2012-03-02 09:04 1VIPS:基于视觉的Web页面分页算法 1.问题的提出 ... -
Java中的数据存储
2011-11-24 21:31 934在JAVA中,有六个不同的 ... -
Java经典收录,一直更新。。。
2011-11-17 13:45 752Thinking in Java,,敏捷软件开发原则、实践与设 ... -
如何提高Java开发能力
2011-11-15 19:17 13881.你需要精通面向对象 ... -
java.util.ResourceBundle使用详解
2011-08-28 16:32 703一、认识国际化资源文件 这个类提供软件国际化的捷径。通 ... -
抽象类、接口的区别 和 抽象类可以不实现接口的全部方法
2011-07-05 11:05 1033抽象类和接口的区别: ... -
RMI规范--第八章 stub/skeleton 接口(转贴)
2011-06-27 18:33 2034另一篇文章也很好,收藏了: http://ajava ... -
将Unicode字符转换成中文
2011-02-27 13:34 894前段时间写的一个将Unicode字符转换为中文的方法,分享下, ... -
一个Java访问网页时URL重定向的问题
2011-02-25 16:53 3215这是去年年底一直想解决的问题(这么简单的问题,现在才解决,说出 ... -
JAVA虚拟机几个命令行参数说明
2011-02-22 10:13 784一、运行class文件执行带main方法的class文件, ... -
Java数组与容器类分析资料--数组、List和Set、Map
2011-02-22 09:47 1461Java容器分析--数组 数组是Java语言内置的 ...
相关推荐
对集合中的对象进行排序,例如:List中存放了User对象,则可根据User对象的某一个属性进行顺序or倒序的排序
listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass.java 动态装载一个类 Shape.java 一个用于测试的简单类 useArray1.java 用反射机制使用数组示例1 ...
在这个"java电话本集合框架版"中,我们重点探讨的是如何利用Java的List接口及其实现类来构建一个功能丰富的电话簿系统。 首先,Java的List接口是集合框架的一部分,它定义了一个有序的元素集合,允许有重复的元素。...
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性 - 这是一种引用传递,即方法改变了原始对象的状态。 #### 42. 面向对象的特征 - **封装**:隐藏对象的实现细节。 - **继承**:创建子类来扩展...
在Java集合框架中,如果要对对象进行排序,需要实现Comparable接口或者在构造时提供一个Comparator比较器。 14. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要正确处理汉字...
容器是JAVA中存放对象的结构,包括Collection、List、Set和Map接口。迭代器用于遍历容器中的元素,Collections工具类提供了对集合的操作。Comparable接口用于对象间的比较,泛型提供了类型安全的集合操作。 第八章 ...
根据提供的文件信息,我们可以整理出一系列与Java编程语言相关的关键词,并对这些关键词进行详细解释,以便更好地理解Java语言的核心概念和技术细节。 ### 公开访问修饰符:`public` `public`是Java中的一个访问...
Java 中你可以凭借多态性,通过一个画圆的对象,来创建一个画椭圆或矩形的对象。不管是 画圆,画椭圆还是画矩形的方法,它们都有一个相同的方法名,但以不同的方式完成他们的 画圆的功能。 1.8 类和对象 1.8.1 ...
学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...
- 初始化一个空箱子列表,用于存放箱子对象。 - 根据物品列表,按体积升序排序,以便先尝试小体积物品。 3. **算法流程**: - 对于每个物品: - 遍历所有箱子,按顺序检查每个箱子是否能容纳该物品。 - 如果...
- **堆内存与栈内存**:对象的属性存放在堆内存中,而方法则保存在全局代码区。栈内存主要用于存储局部变量和方法调用的信息。 - **构造方法**:构造方法用于初始化对象的状态,其名称与类名相同且没有返回类型。...
- 类与对象:Java是一种面向对象的语言,类是创建对象的模板,包含属性(变量)和行为(方法)。 - 数据类型:Java分为基本数据类型和引用数据类型。基本类型包括整型(byte, short, int, long)、浮点型(float, ...
TreeMap按自然排序或自定义比较器排序。 6. **IO流** - 文件操作:File类用于文件的创建、删除等操作,FileInputStream和FileOutputStream用于读写文件。 - 字节流与字符流:InputStream和OutputStream处理字节...
- **数组常用方法**:Java中提供了多个内置方法来操作数组,如`sort()`用于排序、`equals()`用于比较等。 **2.9 面试题** 针对初学者可能遇到的一些常见Java基础知识面试题,如数组排序算法、数组遍历和最值等,...
- Java中的内存泄漏通常是因为对象引用无法被垃圾回收器回收。 - 例如,长时间持有的对象引用,导致对象无法被垃圾回收。 37. **java中实现多态的机制是什么?** - Java通过方法覆盖和方法重载实现多态性。 38....
- Java接口中声明的属性默认为`public static final`,而C++虚类中的成员属性和方法则可以根据需求灵活定义访问级别。 #### 3. Java异常处理机制 Java异常处理机制主要包括以下关键字: - `try`:用于包裹可能抛...
以上是对 Java 开发岗面试中常见知识点的详细解析,希望对你的面试准备有所帮助。在面试过程中,不仅要掌握理论知识,还要注重实际问题解决能力和项目经验的积累,这样才能在竞争激烈的 IT 行业中脱颖而出。
- 直接赋值形式:字符串被存放在常量池中,如果字符串已经存在于常量池,则不再创建新对象。 - 使用`new`关键字:会创建一个新的字符串对象,即使该字符串已经存在于常量池中,也会创建一个新的对象。 5. **...
《Java解惑》一书是为Java初学者和进阶者提供的一份宝贵参考资料,它旨在解答在Java编程过程中常见的困惑和难题。本书涵盖了Java语言的核心概念、语法特性以及实战应用,帮助读者深入理解Java编程的本质,提升编程...