Java編程問題 Java Coding Problems

Anghel Leonard 譯 金嘉怡//夏缽輝//黃堅

  • 出版商: 化學工業
  • 出版日期: 2024-07-01
  • 售價: $894
  • 貴賓價: 9.5$849
  • 語言: 簡體中文
  • 頁數: 566
  • 裝訂: 平裝
  • ISBN: 7122449599
  • ISBN-13: 9787122449597
  • 立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

本書透過探討Java開發工作中常會遇到的問題及相關解決方案,介紹了涉及字串、數字、陣列、集合、
資料結構、日期與時間、物件、不可變性、Switch表達式、型別推斷、Java I/O、Java反射、函數式程式設計、並發、
HTTP Client API和Websocket等方面的核心知識與實用技巧。
 這些簡單或複雜的問題,將幫助你提升解決現實問題的程式設計能力,
讓你了解相關問題是基於Java 8~12的最佳實踐,同時也能偵測你對相關技術的掌握程度。
本書可供初級和中級Java開發人員參考,同樣也適合正為相關技術面試做準備的求職者閱讀。

目錄大綱

第1章 字串、數字和數學
問題
解決方案
1.統計重複字元的數量
2.尋找第一個非重複字符
3.反轉字母和單字
4.檢查字串是否僅包含數字
5.統計元音和子音的數量
6.統計某個特定字元的出現次數
7.將String轉換為int、long、float或double型
8.去除字串中的空格
9.用分隔符號連接多個字串
10.產生全部排列組合
11.檢查字串是否為回文
12.刪除重複的字符
13.刪除給定的字符
14.找出出現次數最多的字符
15.按長度對字串陣列排序
16.檢查字串是否包含子字串
17.計算字串中子字串的出現次數
18.判斷兩個字串是否互為變位詞
19.宣告多行字串(文字區塊)
20.重複拼接同一個字串n次
21.刪除首尾空格
22.尋找最長公共前綴
23.應用程式縮排
24.字串轉換
25.求最小值與最大值
26.求兩個大數總和(int/long)並處理運算溢位的情況
27.解析特定進制下的無符號數
28.透過無符號轉換轉變數字
29.比較兩個無符號數
30.無符號數的除法和取模
31.判斷float/double是否為有限浮點數
32.對兩個布林表達式執行邏輯AND/OR/XOR運算
33.將BigInteger轉換為基本類型
34.將long型別轉換為int型別
35.計算取整除和模數
36.相鄰浮點數
37.求兩個大數的乘積(int/long)並處理運算溢位的情況
38.融合乘加(FMA)
39.緊湊數字格式化
小結
第2章 物件、不可變性與Switch表達式
問題
解決方案
40.用函數式和命令式風格的碼檢查空引用
41.檢查空引用並拋出自定義的NullPointerException異常
42.檢查空引用並拋出指定的例外
43.檢查空引用並回傳非空預設引用
44.檢查索引是否在[0,length)範圍內
45.檢查子區間是否在[0,length)範圍內
46.equals()和hashCode()
47.簡述不可變對象
48.不可變字串
49.寫一個不可變類
50.在不可變類別中傳遞/返回可變對象
51.使用建造者模式編寫不可變類
52.避免在不可變物件中出現錯誤數據
53.克隆對象
54.重寫toString()
55.新版Switch表達式
56.多個case標籤
57.語句塊
小結
第3章 處理日期和時間
問題
解決方案
58.字串與日期時間的轉換
59.格式化日期和時間
60.取得當前日期/時間(不含時間/日期)
61.基於LocalDate和LocalTime建構LocalDateTime
62.透過Instant類取得機器時間
63.使用基於日期的值(Period)定義時間段;使用基於時間的值(Duration)表示一小段時間
64.提取日期和時間單位
65.加減日期時間
66.取得所有時區的UTC和GMT
67.取得所有可用時區的本地日期時間
68.顯示有關航班的日期時間信息
69.將Unix時間戳記轉換為日期時間
70.找出某月的第一天/最後一天
71.定義/提取時區偏移
72.在Date和Temporal之間轉換
73.遍歷一段日期範圍
74.計算年齡
75.獲得一天的起始和結束時間
76.兩個日期之間的差異
77.實作一個西洋棋計時器
小結
第4章 類型推斷
問題
解決方案
78.簡單的var範例
79.使用var與基本型
80.使用var和隱式型別轉換來提高碼的可維護性
81.明確向下轉型(downcast)應避免使用var
82.變數名稱沒有足夠的型別資訊保障可讀性時應避免使用var
83.結合LVTI和麵向介面程式技術
84.結合LVTI和鑽石操作符
85.將數組賦值給var
86.在多變量宣告中使用LVTI
87.LVTI和變數作用域
88.LVTI和三元操作符
89.LVTI和for循環
90.LVTI和流
91.使用LVTI拆分嵌套/大型表達式鏈
92.LVTI和方法回傳值及參數類型
93.LVTI和匿名類
94.LVTI可以是final變數或effectivelyfinal變數
95.LVTI和Lambda表達式
96.LVTI和空初始化器、實例變數以及catch塊變數
97.LVTI和泛型類型
98.LVTI、通配符、協變與逆變
小結
第5章 數組、集合和資料結構
問題
解決方案
99.對數組進行排序
100.找出數組元素
101.檢查兩個陣列是否相等或不匹配
102.依字典序比較兩個數組
103.用數組建立流
104.計算數組的最小值、最大值和平均值
105.反轉數組
106.填滿和設定數組
107.下一個更大的元素(NGE)
108.改變數組大小
109.建立不可修改/不可變的集合
110.映射預設值
111.判斷Map中鍵是否存在或缺失
112.從Map中移除元素
113.替換Map條目
114.比較兩個Map
115.對Map進行排序
116.複製HashMap
117.合併兩個Map
118.移除集合中所有符合謂詞條件的元素
119.將集合轉換為數組
120.使用列表篩選集合
121.替換列表元