- 浏览: 468035 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- java基础 (59)
- struts (8)
- spring (8)
- 数据库 (8)
- java 网络编程 (29)
- hibernate (3)
- JavaScript (10)
- 日志管理 (2)
- jsp (4)
- servlet (7)
- xml (4)
- ajax (2)
- web service (4)
- 算法与数据结构 (13)
- java 反射机制 (11)
- java 泛型 (3)
- java I/O (8)
- java 线程 (12)
- JavaEE (6)
- java解惑 (33)
- 工具 (5)
- MyEclipse编程实践 (1)
- OSGI (2)
- 设计模式 (9)
- 正则表达式 (0)
- EJB (3)
- Ubuntu linux (6)
- Android (1)
- web前端 (2)
- 找工作 (1)
- SCA (1)
- maven (1)
- 缓存 (1)
- json (1)
- javamail (1)
- 工作笔记 (2)
最新评论
-
霜花似雪:
博主可以分享一下源码吗?
使用maven构建web项目实例 -
王庆波-行:
很好的demo!
memcache使用实例 -
surpassno:
大写的牛逼
java可视化显示内存使用情况 -
zhulin0504:
怎么访问NetEcho.html页面呀???
applet与servlet的网络通信 -
springdata:
java多线程实例demo源代码下载:http://www.z ...
java多线程例子
一行以毙之
1,编写一个方法,接收有参数的List参数,返回一个新的List,以相同的顺序包含元素,只不过把第二次以及后续出现的重复元素删除。如果传递的是“spam”,“email”,“spam”,“sail”,“email”,返回一个包含“spam”,“email”,“sail”的新列表。
2,编写一个方法,接受一个由0个或多个由逗号分隔的字符串,并返回一个表示这些标识的字符串数组。顺序相同。如你传递的是“fear,sun,ruthless,hello world, uniform”,那么你将得到一个有6个元素的数组,元素分别为fear,sun,ruthless,
hello world和uniform
3,假设你也一个多维数组,出于调试目的,需要打印它,但你不知道它有多少级,每一级中存储的数据类型,请编写一个方法,打印出每一级的所有元素。
4,编写一个方法,接收两个int型参数,如果第一个数值的二进制补码形式比第二个数值的具有更多的置位,返回true。
解答:
1,你可以通过把集合中的元素置于一个Set中将集合中的所有重复元素消除。但本题,还要求保留最初顺序,幸运的是,有一种Set的实现维护其元素插入的顺序,它提供的导入性能接近HashMap。它就是LinkedHashSet,是在java1.4版本中添加到java平台的,在内部,使用链接表来处理,但要求返回的是List,必须用LinkedHashSet来初始化List。
2,正则表达式:
3,用Arrays.deepToString(Object[] o)方法。
4,在jdk1.5版本中增加了一整套位操作。整数类型的包装器类(Integer、Long、Short、Byte和Character)现在支持通用的位操作,包括highestOneBit、lowestOneBit,numberOfLeadingZeros、numberOfTrailingZeros、bitCount、rotateLeft等等。在本例中,需要用Integer.bitCount,返回的是一个int数值中被置位的位数:
了解库中有些什么可以为你节省大量的时间和精力,并可以提高你的程序的速度和质量。
谜题65:疑似排序的惊人传奇
cmp这种比较器有问题,因为两个int或long数值进行减法时,结果可能溢出。例如下面例子
可以改为:
1,编写一个方法,接收有参数的List参数,返回一个新的List,以相同的顺序包含元素,只不过把第二次以及后续出现的重复元素删除。如果传递的是“spam”,“email”,“spam”,“sail”,“email”,返回一个包含“spam”,“email”,“sail”的新列表。
2,编写一个方法,接受一个由0个或多个由逗号分隔的字符串,并返回一个表示这些标识的字符串数组。顺序相同。如你传递的是“fear,sun,ruthless,hello world, uniform”,那么你将得到一个有6个元素的数组,元素分别为fear,sun,ruthless,
hello world和uniform
3,假设你也一个多维数组,出于调试目的,需要打印它,但你不知道它有多少级,每一级中存储的数据类型,请编写一个方法,打印出每一级的所有元素。
4,编写一个方法,接收两个int型参数,如果第一个数值的二进制补码形式比第二个数值的具有更多的置位,返回true。
解答:
1,你可以通过把集合中的元素置于一个Set中将集合中的所有重复元素消除。但本题,还要求保留最初顺序,幸运的是,有一种Set的实现维护其元素插入的顺序,它提供的导入性能接近HashMap。它就是LinkedHashSet,是在java1.4版本中添加到java平台的,在内部,使用链接表来处理,但要求返回的是List,必须用LinkedHashSet来初始化List。
static <E> List<E> withoutDuplicates(List<E> original){ return new ArrayList<E>(new LinkedHashSet<E>(original)); }
2,正则表达式:
static String[] parse(String s){ return s.split(",\\S*"); }
3,用Arrays.deepToString(Object[] o)方法。
4,在jdk1.5版本中增加了一整套位操作。整数类型的包装器类(Integer、Long、Short、Byte和Character)现在支持通用的位操作,包括highestOneBit、lowestOneBit,numberOfLeadingZeros、numberOfTrailingZeros、bitCount、rotateLeft等等。在本例中,需要用Integer.bitCount,返回的是一个int数值中被置位的位数:
static boolean hasMoreBitsSet(int i,int j){ return Integer.bitCount(i)>Integer.bitCount(j); }
了解库中有些什么可以为你节省大量的时间和精力,并可以提高你的程序的速度和质量。
谜题65:疑似排序的惊人传奇
package puzzle; import java.util.Random; import java.util.Arrays; import java.util.Comparator; public class SuspiciousSort { public static void main(String[] args) { Random r = new Random(); Integer[] arr = new Integer[100]; for(int i =0;i<arr.length;i++){ arr[i]=r.nextInt(); } Comparator<Integer> cmp = new Comparator<Integer>(){ public int compare(Integer i1,Integer i2){ return i2-i1; //自动拆箱,实现的是降序排序, } }; Arrays.sort(arr,cmp); //利用比较器进行排序 System.out.println(order(arr)); //打印UNORDERED } enum Order {ASCENDING,DESCENDING,CONSTANT,UNORDERED}; private static Order order(Integer[] a) { boolean ascending = false; boolean descending = false; for(int i =1;i<a.length;i++){ ascending |=(a[i]>a[i-1]); //或 descending |=(a[i]<a[i-1]); } if(ascending &&!descending) return Order.ASCENDING; if(!ascending &&descending) return Order.DESCENDING; if(!ascending) return Order.CONSTANT; //所有元素相等 return Order.UNORDERED; //没有排序 } }
cmp这种比较器有问题,因为两个int或long数值进行减法时,结果可能溢出。例如下面例子
public class Overflow { public static void main(String[] args) { int x = -2000000000; int z = 2000000000; System.out.println(x-z); //294967296 } }
可以改为:
public int compare(Integer i1,Integer i2){ return (i2<i1 ? -1:(i2==i1? 0 :1)); }
发表评论
-
数据库及struts面试题
2011-06-22 11:07 1061数据库部分 Q: What is SQL? ... -
EJB面试题
2011-06-22 10:54 1127Q: What are the different kinds ... -
java中的servlet面试题
2011-06-22 10:43 1112Q: Explain the life cycle metho ... -
java中JSP的面试题
2011-06-22 10:22 1546Q: What is a output comment? (可 ... -
java中的集合面试题
2011-06-22 10:12 722Q: What is the Collections API? ... -
彻底搞清楚java的内部类
2011-06-15 10:47 1507内部类允许在一个类中 ... -
细说java(java中的浮点数十六进制表示)
2011-06-12 16:48 3566java中浮点数不能用八进制表示,但可以用十六进制表示,只能用 ... -
SCJP试题
2011-06-09 16:14 1179package scjp; public class T ... -
java面试题解惑 之 继承、多态、重载、重写
2011-06-03 09:36 1301继承、多态、重载、重写 继承 java中有三种类:类,抽象类, ... -
java面试题解惑 之 多线程
2011-06-02 17:24 9951,多线程 线程或者说 ... -
java面试题解惑 之变量初始顺序,变量覆盖,字符串池,final,finally区别
2011-06-02 16:26 8011,变量初始化顺序 package com.qdu.sun; ... -
java解惑(Map的使用,静态导入方法,线程中断interrupted与线程死锁)
2011-05-17 12:38 1401Map的使用 package other; import ... -
java 继承的一个问题(想不明白)
2011-04-13 17:03 917java中的继承问题,以为是学会了java,结果最简单的一个j ... -
java解惑(谜题76。。)
2011-03-09 11:22 1223谜题76:乒乓public class PingPong { ... -
java解惑(谜题66。。。)
2011-02-28 20:54 958谜题66:一件私事 class Base{ public ... -
java解惑(谜题61。。。)
2011-02-28 20:17 917谜题61:日期游戏 import java.util.Cal ... -
java解惑(谜题56到。。库之谜)
2011-02-28 19:41 861谜题56:大问题 import jav ... -
java解惑(谜题49。。)
2011-02-27 10:52 955谜题49:比生命更大 import java.util.Cal ... -
java解惑(谜题41到谜题)
2011-02-27 10:18 922谜题41:域和流 下面的 ... -
谜题36-谜题
2011-02-25 10:55 902谜题36:优柔寡断 public ...
相关推荐
本文将深入探讨Java中的表达式谜题、字符谜题、循环谜题以及异常谜题,帮助你解开这些编程难题,进一步提升你的Java技能。 ### Java表达式谜题 Java表达式是程序中进行计算的部分,它们可以是简单的变量引用,也...
我整理出来的Java解惑/谜题的CHM版本,包括目录、全文搜索和收藏夹。比目前Word/PDF版本的多个目录,比TXT版本的多一些格式。-- 如果不能打开CHM,请按下面方法解决:-- 右键点击chm文档,查看属性,可以看到...
《Java解惑》是一本专为Java程序员设计的书籍,旨在揭示编程中常见的陷阱、误解和易犯的错误。这本书的中文版使得更多的中国开发者能够深入理解这些“谜题”,提高编程技能。Java Puzzlers是由Java之父James Gosling...
### JAVA解惑中的关键知识点解析 #### 谜题1:奇数性的判断 在《JAVA解惑》一书中,作者通过一系列实例介绍了Java编程语言中的一些不易掌握的知识点。其中一个例子是关于如何正确判断一个整数是否为奇数。 **原始...
文档《java解惑 PDF版》中列举了95个这样的谜题,每个谜题都旨在帮助开发者理解并纠正一些常见的错误理解。以下是根据提供的部分内容解析的几个相关知识点。 ### 表达式谜题与取余操作符(%)的行为 在Java中,...
在每个谜题之后都有详细的解惑方案,这些方案在给出那些实际行为与表面上迥异的程序行为的简单解释的同时,更向读者展示了如何一劳永逸地避免底层的陷阱与缺陷。 本书以轻松诙谐的语言,寓教于乐的方式,由浅入深、...
谜题60:一行的方法 谜题61:日期游戏 谜题62:名字游戏 谜题63:更多同样的问题 谜题64:按余数编组 谜题65:一种疑似排序的惊人传奇 Java谜题7——更多的类谜题 谜题66:一件私事 谜题67:对字符串上瘾 ...
### Java解惑 书籍类 谜题 #### Java谜题1——表达式谜题 **谜题1:奇数性** 本节讨论了一个看似简单的Java方法,旨在判断一个整数是否为奇数: ```java public static boolean isOdd(int i) { return i % 2 ==...
该书特写了95个有关Java或其类库的陷阱和缺陷的谜题,其中大多数谜题都采用了短程序的方式,这些程序的行为与其看似的大相径庭。在每个谜题之后都给出了详细的解惑方案,这些解惑方案超越了对程序行为的简单解释,向...
### JAVA面试谜题解惑知识点解析 #### 表达式谜题:奇数性检查方法的缺陷 **题目背景:** 题目中提到的谜题旨在检验面试者对Java中的基本数学运算符及其行为的理解程度。具体来说,是针对取余运算符`%`在处理整数...
本书特写了95个有关Java或其类库的陷阱和缺陷的谜题,其中大多数谜题都采用了短程序的方式,这些程序的行为与其看似的大相径庭。在每个谜题之后都给出了详细的解惑方案,这些解惑方案超越了对程序行为的简单解释,向...
《Java解惑》是一本由Google工程师编写的经典教材,旨在帮助开发者解决在实际编程过程中遇到的困惑和误解。这本书通过一系列精心设计的“Java谜题”,揭示了语言中的一些不直观特性和陷阱,从而提升读者对Java深层...
《Javapuzzler+JAVA解惑 中英双语 完整源代码》是一份集学习与实践于一体的Java编程资源,包含《Java Puzzlers》和《JAVA解惑》两部分,以及对应的完整源代码。这份资料对于深入理解Java语言的特性和陷阱,提升编程...
java谜题解惑This Fifth Edition is completely revised and expanded to cover JavaScript as it is used in today's Web 2.0 applications. This book is both an example-driven programmer's guide and a keep-...
以下是对这两个Java谜题的深入解析: 谜题1:奇数性 在这个问题中,我们有一个方法`isOdd(int i)`,它通过检查`i % 2`是否等于1来判断一个整数是否为奇数。然而,这个方法在处理负数时会出现问题,因为Java中的取余...