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>