热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

这些问题你可以用一行代码可以搞定吗?

A.编写一个方法,它接受一个包含元素的List,并返回一个新的List,它以相同的顺序包含相同的元素,只不过它把第二次以及后续出现的重复元素都剔除了。例如,如果你传递了一个包含”spam&

A.编写一个方法,它接受一个包含元素的List,并返回一个新的List,
它以相同的顺序包含相同的元素,只不过它把第二次以及后续出现的重复
元素都剔除了。例如,如果你传递了一个包
含”spam”,”sausage”,”spam”,”spam”,”bacon”,”spam”,”t
omato”和”spam”的列表,那么你将得到一个包
含”spam”,”sausage”,”bacon”,”tomato”的新列表。
? B.编写一个方法,它接受一个由0 个或多个由逗号分隔的标志所组成的
字符串,并返回一个表示这些标志的字符串数组,数组中的元素的顺序与
这些标志在输入字符串中出现的顺序相同。每一个逗号后面都可能会跟随
0 个或多个空格字符,这个方法忽略它们。例如,如果你传递的字符串
是”fear, surprise, ruthless efficiency, an almost fanatical
devotion to the Pope, nice red uniforms”,那么你得到的将是一个
包含5 个元素的字符串数组,这些元素
是”fear”,”surprise”,”ruthless efficiency”,”an almost
fanatical devotion to the Pope” 和 “nice red uniform”。
? C.假设你有一个**数组,出于调试的目的,你想打印它。你不知道这
个数组有多少级,以及在数组的每一级中所存储的对象的类型。编写一个
方法,它可以向你显示出在每一级上的所有元素。
? D.编写一个方法,它接受两个int 数值,并在第一个数值与第二个数值
以二进制补码形式进行比较,具有更多的位被置位时,返回true。
A.众所周知,你可以通过把集合(collection)中的元素置于一个Set 中将集
合中的所有重复元素都消除掉。在本谜题中,你还被要求要保持最初的集合中的
元素顺序。幸运的是,有一种Set 的实现可以维护其元素被插入的顺序,它提供
的导入性能接近HashMap。它就是LinkedHashSet,它是在1.4 版本的JDK 中被
添加到Java 平台中的。在内部,它是用一个链接列表来处理的,从而被实现为
一个散列表。它还有一个映射表版本可供你使用,以定制缓存。一旦你了解了
LinkedHashSet,本谜题就很容易解决了。剩下唯一的关键就是你被要求要返回
一个List,因此你必须用LinkedHashSet 的内容来初始化一个List。把它们放
到一块,就形成了下面的解决方案:
static List withoutDuplicates(List original) {
return new ArrayList(new LinkedHashSet(original));
}
B.在将字符串解析成标志时,许多程序员都立刻想到了使用StringTokenizer。
这是最不幸的事情,自1.4 版本开始,由于正则表达式被添加到了Java 平台中
(java.util.regex),StringTokenizer 开始变得过时了。如果你试图通过
StringTokenizer 来解决本谜题,那么你很快就会意识到它不是非常适合。通过
使用正则表达式,它就是小菜一碟。为了在一行代码中解决本谜题,我们要使用
很方便的方法String.split,它接受一个描述标志分界符的正则表达式作为参
数。如果你以前从来没有使用过正则表达式,那么它们看起来会显得有一点神秘,
但是它们惊人地强大,值得我们好好学习一下:
static String[ ] parse(String string) {
return string.split(",//S*");
}
C.这是一个讲究技巧的问题。你甚至不必去编写一个方法。这个方法在5.0 或
之后的版本中已经提供了,它就是Arrays.deepToString。如果你传递给它一个
对象引用的数组,它将返回一个精密的字符串表示。它可以处理嵌套数组,甚至
可以处理循环引用,即一个数组元素直接或间接地引用了其嵌套外层的数组。事
实上,5.0 版本中的Arrays 类提供了一整套的toString、equals 和hashCode
方法,使你能够打印、比较或散列任何原始类型数组或对象引用数组的内容。
D.为了在一行代码中解决该谜题,你需要了解在5.0 版本中添加到Java 平台中
的一整套位操作方法。整数类型的包装器类(Integer、Long、Short、Byte 和
Char)现在支持通用的位处理操作,包括highestOneBit、lowestOneBit、
numberOfLeadingZeros、numberOfTrailingZeros、bitCount、rotateLeft、
rotateRight、reverse、signum 和reverseBytes。在本例中,你需要的是
Integer.bitCount,它返回的是一个int 数值中被置位的位数:
static Boolean hasMoreBitsSet(int i, int j) {
return (Integer.bitCount(i) > Integer.bitCount(j));
}
总之,Java 平台的每一个主版本都在其类库中隐藏了一些宝藏。本谜题的所有4
个部分都依赖于这样的宝藏。每当该平台发布一个新版本时,你都应该研究就一
下新特性和提高(new features and enhancements)页面,这样你就不会遗漏
掉新版本提供的任何惊喜[Features-1.4, Features-5.0]。了解类库中有些什么
可以节省你大量的时间和精力,并且可以提高你的程序的速度和质量。
 


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • HashTable与ConcurrentHashMap均可实现HashMap的功能,对外提供了键值对存储的数据结构。但是在内部结构及实现上有何区别,性能上的差异到底在哪里又是如何导致的 ... [详细]
  • 有2种办法让HashMap线程安全,分别如下:  方法一:通过Collections.synchronizedMap()返回一个新的Map,这个新的map就是线程安全的。这个要求大家习惯基于接口编程 ... [详细]
  • 类Hashtable<K,V>所有已实现的接口:Serializable,Cloneable,Map<K,V>此类实现一个哈希表,该哈希表将键映 ... [详细]
  • 本篇文章给大家分享的是有关Java中怎么对HashMap按键值排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话 ... [详细]
  • ***功能:排序*privatestaticvoidoutputRegionStatistics(HashMap<String,Integer>regionMap){ ... [详细]
  • 将学生对象和学生的归属地通过键与值存储到map集合中。importjava.util.HashMap;importjava.util.Iterator;importjava.uti ... [详细]
  • 01Map集合概述A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同a:Collection中的集合 ... [详细]
  • 手写HashMap,快手面试官直呼内行
    手写HashMap,快手面试官直呼内行-手写HashMap?这么狠,面试都卷到这种程度了?第一次见到这个面试题,是在某个不方便透露姓名的Offer收割机大佬的文章:这……我当 ... [详细]
  • 在Java中有多种遍历HashMap的方法,注意Java中所有的Map类型都实现了共有的Map接口,所以接下来方法适用于所有Map(如:HaspMap,TreeMap,Linked ... [详细]
  • Java面试 HashMap、HashSet源码解析
    本章所有源代码基于JDK1.8版本HashMap和HashSet是JavaCollectionFramework的两个重要成员,其中HashMap是Map接口的常用实现类,Hash ... [详细]
  • 写这篇文章起源于一道面试题,如何将自定义的类对象作为key存储到HashMap中,即考虑怎么判断key的唯一性。首先,我们看以下HashMap中put(…)方法的源码:public ... [详细]
  • 邮件解析引擎FastMail库大功告成!
    1概述邮件解析库API完全使用面向对象技术设计,使用C++语言开发的用于邮件解析和组装的库。它提供了一些类用来解析和组装Internet邮件,如MimeMessa ... [详细]
author-avatar
手机用户2502937767
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有