譯註:map(映射)和reduce(歸約,化簡)是數學上兩個很基礎的概念,它們很早就出現在各類的函數程式設計語言裡了,直到2003年Google將其發揚光大,運用到分布式系統中進行並行計算後,這個組合的名字才開始在電腦界大放異彩(那些函數式粉可能並不這麼認為)。本文我們會看到Java
選取單個元素直覺來說選取單個元素肯定會比選取多個要簡單得多,不過這裡也存在一些問題。我們先看下一般的做法的問題是什麼,然後再看下如何用lambda運算式來解決它。我們先建立一個方法來尋找一個以特定字母開頭的元素,然後列印出來。複製代碼 代碼如下:public static void pickName(final List<String> names, final String startingLetter) {String foundName = null;for(String
使用詞法範圍和閉包很多開發人員都存在這種誤解,認為使用lambda運算式會導致代碼冗餘,降低代碼品質。恰恰相反,就算代碼變得再複雜,我們也不會為了代碼的簡潔性而在代碼品質上做任何妥協,下面我們就會看到。在前面一個例子中我們已經可以重用lambda運算式了;然而,如果再匹配另外一個字母,代碼冗餘的問題很快又捲土重來了。我們先來進一步分析下這個問題,然後再用詞法範圍和閉包來把它解決掉。lambda運算式帶來的冗餘我們來從friends中過濾出那些以N或者B開頭的字母。繼續延用上面的那個例子,我們寫出
列表的轉化將集合轉化成一個新的集合就和遍曆它一樣簡單。假設我們要將列表中的名字轉化成全大寫的。我們看下都有哪些實現方式。Java中的字串是不可變的,所以它沒法改變。我們可以產生新的字串,用來其他清單中原有的元素。然而這樣做的話,原來列表就沒了;還有一個問題,原來的列表可能也是不可變的,比如Arrays.asList()產生的,所以修改原來的列表這招不行。還有一個缺點就是這樣做很難並行操作。產生一個新的全大寫的列表是個不錯的選擇。乍聽起來這個建議弱爆了;效能是我們都很關注的一個問題。令人吃驚的是,
第二章:集合的使用我們經常會用到各種集合,數位,字串的還有對象的。它們無處不在,哪怕操作集合的代碼要能稍微最佳化一點,都能讓代碼清晰很多。在這章中,我們探索下如何使用lambda運算式來操作集合。我們用它來遍曆集合,把集合轉化成新的集合,從集合中刪除元素,把集合進行合并。遍曆列表遍曆列表是最基本的一個集合操作,這麼多年來,它的操作也發生了一些變化。我們使用一個遍曆名字的小例子,從最古老的版本介紹到現在最優雅的版本。用下面的代碼我們很容易建立一個不可變的名字的列表:複製代碼 代碼如下:final
第一章 你好,lambda運算式! 第一節 Java的編碼風格正面臨著翻天覆地的變化。我們每天的工作將會變成更簡單方便,更富表現力。Java這種新的編程方式早在數十年前就已經出現在別的程式設計語言裡面了。這些新特性引入Java後,我們可以寫出更簡潔,優雅,表達性更強,錯誤更少的代碼。我們可以用更少的代碼來實現各種策略和設計模式。在本書中我們將通過日常編程中的一些例子來探索函數式風格的編程。在使用這種全新的優雅的方式進行設計編碼之前,我們先來看下它到底好在哪裡。改變了你的思考方式
HTML是WEB的核心,互連網中你看到的所有頁面都是HTML,不管它們是由JavaScript,JSP,PHP,ASP或者是別的什麼WEB技術動態產生的。你的瀏覽器會去解析HTML並替你去渲染它們。不過如果你需要自己在Java程式中解析HTML文檔並尋找某些元素,標籤,屬性或者檢查某個特定的元素是否存在的話,那又該如何呢?如果你已經使用Java編程多年了,我相信你肯定試過去解析XML,也使用過類似DOM或者SAX這樣的解析器,不過很有可能你從未進行過任何的HTML解析的工作。更諷刺的是,在Jav
今天大概耗費了快一天的時間研究怎麼用指令碼執行java程式,終於實現了,分享一下(1)在linux下寫一個.sh檔案(2)檔案內容如下:複製代碼 代碼如下:#!/bin/sh //bash檔案頭APP_HOME=/home/blmcrm/crm/A //要執行的java檔案中bin檔案的上一個目錄,我的目錄是/home/blmcrm/crm/
本文執行個體講述了Java實現基於長條圖應用的相似圖片識別,是非常實用的技巧。分享給大家供大家參考。具體分析如下:一、演算法概述:首先對源映像與要篩選的映像進行長條圖資料擷取,對採集的各自映像長條圖進行歸一化再使用巴氏係數演算法對長條圖資料進行計算,最終得出映像相似性值,其值範圍在[0,
Java添加事件的幾種方式(轉載了codebrother的文章,做了稍微的改動):/** * Java事件監聽處理——自身類實現ActionListener介面,作為事件監聽器 * * @author codebrother */class EventListener1 extends JFrame implements ActionListener { private JButton btBlue, btDialog; public EventListener1() {
概念首先,我們看看Set集合。(01) Set 是繼承於Collection的介面。它是一個不允許有重複元素的集合。(02) AbstractSet 是一個抽象類別,它繼承於AbstractCollection,AbstractCollection實現了Set中的絕大部分函數,為Set的實作類別提供了便利。(03) HastSet 和 TreeSet 是Set的兩個實作類別。
本文執行個體為大家分享了Java圖片上傳代碼,供大家參考,具體內容如下import java.io.*; import java.net.*; /* *發送端 */ class picsend { public static void main(String[] args) throws Exception { if(args.length!=1) { System.out.println("請選擇一張.jpg圖片"); return; }
解析:如果並不知道程式運行時會需要多少對象,或者需要更複雜方式儲存物件,那麼可以使用Java集合架構。如果啟用集合的刪除方法,那麼集合中所有元素的索引會自動維護。集合完全彌補了數組的缺陷。02.集合架構的內容 集合架構都包含三大塊內容:對外的介面,介面的實現和對集合運算的演算法 01.介面:表示集合的抽象資料類型 02.實現:集合架構中介面的具體實現 03.演算法:在一個實現了某個集合架構的介面的對象身上完成某種有用的計算方法java集合架構簡圖:&nbs
本文執行個體為大家分享了java用戶端登陸伺服器使用者名稱驗證的具體實現代碼,供大家參考,具體內容如下用戶端通過鍵盤錄入使用者名稱,服務端對使用者名稱進行驗證。 如果使用者名稱存在,服務端顯示xxx已登入,用戶端顯示xxx,歡迎登陸。 如果使用者名稱不存在,服務端顯示xxx嘗試登陸,用戶端顯示xxx,使用者名稱不存在。 最多登陸三次,防止暴力登陸。 import java.io.*; import java.net.*; /* *用戶端 */ class client {
本文執行個體為大家分享了Calendar時間操作常用方法,具體內容如下package test;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;/** * Date和Calendar常用方法,Date很多方法已經棄用,因此以Calendar為主 * * @author tuzongxun123 * */public class DateAndCalendarTest
本文執行個體為大家分享了Java使用poi操作excel的具體代碼,供大家參考,具體內容如下依賴poi的jar包,pom.xml配置如下:<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.
本文為大家分享了一個滿足線上網頁交流需求的執行個體,由於java Socket實現的網頁版線上聊天功能,供大家參考,具體內容如下實現步驟:1、使用awt組件和socket實現簡單的單用戶端向服務端持續發送訊息;2、結合線程,實現多用戶端串連服務端發送訊息;3、實現服務端轉寄用戶端訊息至所有用戶端,同時在用戶端顯示;4、把awt組件產生的視窗介面改成前端jsp或者html展示的介面,java socket實現的用戶端改為前端技術實現。這裡首先實現第一步的簡易功能,痛點在於:1、沒有用過awt組件,
廢話不多說了,直接給大家貼java代碼了。具體代碼如下所示:/*支付流程*//****Controller.java 代碼如下:*/@RequestMapping(value = "/paySubmit.htm", method = RequestMethod.POST)public ModelAndView paySubmit(HttpServletRequest request,HttpServletResponse response, @RequestParam
實現Comparator介面Comparator介面的身影在JDK庫中隨處可見,從尋找到排序,再到反轉操作,等等。Java 8裡它變成了一個函數式介面,這樣的好處就是我們可以使用流式文法來實現比較子了。我們用幾種不同的方式來實現一下Comparator,看看新式文法的價值所在。你的手指頭會感謝你的,不用實現匿名內部類少敲了多少鍵盤啊。使用Comparator進行排序下面這個例子將使用不同的比較方法,來將一組人進行排序。我們先來建立一個Person的JavaBean。複製代碼
第三章