库谜题60:用一行代码实现功能

package LibPuzzles;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;

/**
 * 下面中的方法都是用一行的代码实现功能。
 * 
 * @author xixizhao
 * 
 */
public class OneLine {

	// 方法1,编写一个方法,它接受一个包含元素的List,并返回一个新的List,它以相同的顺序包含相同的元素,只不过它把第二次以及后续出现的重复元素都剔除了。
	static <E> List<E> withoutDuplicate(List<E> original) {
		return new ArrayList<E>(new LinkedHashSet<E>(original));
	}

	// 方法2,编写一个方法,它接受一个由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”。
	static String[] parse(String string) {
		return string.split(",\\s*");// \S表示匹配所有的非空白字符。小写的正好意思相反。
	}

	//方法4.编写一个方法,它接受两个int数值,并在第一个数值与第二个数值以二进制补码形式进行比较,
	//具有更多的位被置位数时,返回true为了在一行代码中解决该谜题,
	//你需要了解在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));
	}

	

	public static void main(String[] args) {
		String[][] strs = {{"a", "b", "c"}, {"d", "e", "f"}};
		
		String str = "a, b c,  c f,    d f f";
		String[] strArray = parse(str);
		for (String s : strArray) {
			System.out.println(s);
		}
		// 方法3.假设你有一个多维数组,出于调试的目的,你想打印它。你不知道这个数组有多少级,以及在数组的每一级中所存储的对象的类型。编写一个方法,
		//它可以向你显示出在每一级上的所有元素。这是一个讲究技巧的问题。你甚至不必去编写一个方法。这个方法在5.0或之后的版本中已经提供了,
		//它就是Arrays.deepToString。如果你传递给它一个对象引用的数组,它将返回一个精密的字符串表示。
		//它可以处理嵌套数组,甚至可以处理循环引用,即一个数组元素直接或间接地引用了其嵌套外层的数组。
		//事实上,5.0版本中的Arrays类提供了一整套的toString、equals和hashCode方法,
		//使你能够打印、比较或散列任何原始类型数组或对象引用数组的内容。
		System.out.println(Arrays.deepToString(strs));
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值