Java集合、数组和字符串整合API Dollar
fmms
12年前
<p>把Java中的集合,数组,字符串整合成一个统一的api。很类似JQuery中的著名的$函数。<br /> </p> <h2 id="!dollar">Dollar</h2> <ul> <li>100% Java6 (no cglib proxies, bytecode manipulation) </li> <li>single jar (no dependencies besides JDK6) </li> <li>fluent builders for Lists, Sets and Maps </li> <li>boxing and (null-safe) unboxing of primitive arrays </li> <li>advanced array boxing (e.g. int[] -> List<Integer>) </li> <li>design based on use cases provided by <a href="/misc/goto?guid=4958532884904732589">stackoverflow.com</a> questions (see <a href="/misc/goto?guid=4959517414772881264">DollarTest.java</a>) </li> <li>beware: eager, mutable state </li> <li>more than 300 unit tests </li> <li>LGPL version 3 </li> <li>pull requests are welcome and encouraged </li> </ul> <p><br /> </p> <p>看例子吧:</p> <pre class="brush:java; toolbar: true; auto-links: false;">// 产生 0, 1, 2, 3, 4序列 List list = $(5).toList(); // 指定开始结束的序列 10, 11, 12, 13, 14 List list2 = $(10, 15).toList(); // 产生随机数序列 List randomIntegers = $(new Random(), 100).samples(50).sort().toList(); // jion方法,我太喜欢了。"4->3->2->1->0" $(5).reverse().join("->"); // join() any iterable to a String $(array).join(); $(list).join(); $(set).join(); // join() works also for 'range' type $(5, 10).join(); // "56789" $('a', 'd').join("-"); // "a-b-c-d" // and even on strings, StringBuilders, etc $("aaa").join(" "); // "a a a" // repeat Strings, but it works also for any Iterable/Collection and Array String repeat = $("abc").repeat(3).join(" "); // "abc abc abc" // convert Long[] to long[], while sorting it Long[] aLongArray = { 42L, 84L }; long[] longs = $(aLongArray).sort().toLongArray(); // fluent interface: convert a primitive int array to ArrayList, in the reversed order int[] array = { 4, 2, -5 }; List list = $(array).sort().reverse().toList(); // you can even unbox a short[] array to long[] (since it doesn't cause a loss of precision) short[] shorts = { 42, 42, 42 }; long[] $(shorts).toLongArray(); // syntactic sugar $("a string").size(); // "a string".length() $(aCollection).size(); // aCollection.size() $(anArray).size(); // anArray.length $(array).toString(); // calls Arrays.toString() // for loop以前这么写 for (int i = 0; i < 10; i++) { } // 现在只需要 for (int i : $(10)) { } //查找 排序 取出最大最小值 $(any).indexOf(T) $(any).sort(Comparator) $(any).max(Comparator) $(any).min(Comparator)</pre> <strong><pre class="brush:java; toolbar: true; auto-links: false;">import static com.humaorie.dollar.Dollar.*; // yes, $ is a valid Java identifier // build the List 0, 1, 2, 3, 4 List<Integer> list = $(5).toList(); // build the List 10, 11, 12, 13, 14 List<Integer> list2 = $(10, 15).toList(); // build a sorted random list of 50 integers up to 100 List<Integer> randomIntegers = $(new Random(), 100).samples(50).sort().toList(); // build the String "4->3->2->1->0" $(5).reverse().join("->"); // repeat a String String repeat = $("abc").repeat(3).join(" "); // "abc abc abc" // convert and sort a Long[] to long[] Long[] aLongArray = { 42L, 84L }; long[] longs = $(aLongArray).sort().toLongArray(); // fluent interface: convert a primitive int array to ArrayList, in the reversed order int[] array = { 4, 2, -5 }; List<Integer> list = $(array).sort().reverse().toList(); // you can even unbox a short[] array to long[] (since it doesn't cause a loss of precision) short[] shorts = { 42, 42, 42 }; long[] $(shorts).toLongArray(); // syntactic sugar $("a string").size(); // "a string".length() $(aCollection).size(); // aCollection.size() $(anArray).size(); // anArray.length $(array).toString(); // calls Arrays.toString()</pre> </strong> <p><strong>项目主页:</strong><a href="http://www.open-open.com/lib/view/home/1326943617015" target="_blank">http://www.open-open.com/lib/view/home/1326943617015</a></p>