顯示具有 list 標籤的文章。 顯示所有文章
顯示具有 list 標籤的文章。 顯示所有文章

quick ways to initialize a list of numbers or strings in java

Java 快速建立整數與字串清單的寫法

在 Java 中,建立 List<Integer>List<String> 是非常常見的需求。 以下依照不同 JDK 版本,整理出幾種快速建立可修改(modifiable) 清單的寫法,可依個人習慣彈性使用。

1️⃣ JDK 5(2004)起支援的寫法

自 JDK 5 起,Java 引入了 泛型(Generics)自動封裝(Autoboxing),因此可以直接將 int 自動轉為 Integer


  Integer[] intArray = {1, 2, 3};
  String[]  strArray = {"A", "B", "C"};

  List<Integer> ints =
    new ArrayList<Integer>(Arrays.asList(intArray));

  List<String> strings =
    new ArrayList<String>(Arrays.asList(strArray));
  
✅ 適用於舊版系統(JDK 5 / 6)
✅ 清楚明確,但型別宣告較冗長

2️⃣ JDK 7(2011)起支援的寫法(鑽石運算子)

JDK 7 引入了 鑽石運算子(<>, 可讓編譯器自動推斷泛型型別,使程式碼更精簡。


  List<Integer> ints =
    new ArrayList<>(Arrays.asList(1, 2, 3));

  List<String> strings =
    new ArrayList<>(Arrays.asList("A", "B"));
  
✅ 語法更簡潔
✅ 仍然回傳可修改的 ArrayList

3️⃣ Java 9(2017)起支援的寫法(搭配 List.of

Java 9 引入了 List.of() 作為集合工廠方法, 可快速建立不可修改的清單。 若實務上仍需要可修改的清單,可再包裝成 ArrayList


  List<Integer> ints =
    new ArrayList<>(List.of(1, 2, 3));

  List<String> strings =
    new ArrayList<>(List.of("A", "B"));
  
✅ 語意清楚、現代化寫法
⚠️ List.of() 本身不可修改,需額外包裝

✅ 小結

  • JDK 5+:可使用泛型與自動封裝
  • JDK 7+:可使用鑽石運算子,讓程式碼更乾淨
  • Java 9+:可搭配 List.of() 撰寫更語意化的程式碼

實務上建議:
👉 需要可修改清單 ⇒ 使用 new ArrayList<>(...)
👉 元素固定不變 ⇒ 直接使用 List.of()

java container (jdk1.5)

java容器(since jdk1.5版)   Version 0.2b, 2006/10/26
==================

各容器介面摘要(功能定義):
  Collection 收藏:    放個別物件,  可重複放,無位置概念,無排序
  Queue 佇列:         放個別物件,  可重複放,頭位置概念,部份排序
  List 清單:          放個別物件,  可重複放,任意位置  ,無排序
  Set 集合:           放個別物件,不可重複放,無位置概念,無排序
  SortedSet 有序集合: 放個別物件,不可重複放,有頭尾概念,有排序
  Map 映射:           放成對物件,不可重複放,無位置概念,無排序
  SortedMap 有序映射: 放成對物件,不可重複放,有頭尾概念,有排序

各容器類別摘要(實作各介面的實體類別):
  Collection:   Vector,Stack,ArrayList,ArrayBlockingQueue,
  LinkedList,PriorityQueue,HashSet,TreeSet
  Queue: ArrayBlockingQueue,LinkedList,PriorityQueue
  List:  Vector,Stack,ArrayList,LinkedList
  Set:  HashSet,TreeSet
  SortedSet: TreeSet
  Map:  HashMap,TreeMap,HashTable,Properties
  SortedMap: TreeMap
  --
  Vector 向量,Stack 堆疊,ArrayList 陣列清單,LinkedList 鏈結清單,
  ArrayBlockingQueue 陣列等候佇列,PriorityQueue 順位佇列,
  HashSet 雜湊集合,TreeSet 樹狀集合,
  HashMap 雜湊映射,TreeMap 樹狀映射,
  HashTable 雜湊表,Properties 屬性表

容器演算法:
  Collections.binarySearch/min/max/indexOfSublist/lastIndexOfSublist,
 fill/copy/swap/shuffle/sort/reverse/rotate,
 list/nCopies/enumeration/reverseOrder,
 singleton/singletonList/singletonMap,
 synchronizedCollection/synchronizedSet/synchronizedList,
 synchronizedMap/synchronizedSortedSet/synchronizedSortedMap,
 unmodifiableCollection/unmodifiableSet/unmodifiableList,
 unmodifiableMap/unmodifiableSortedSet/unmodifiableSortedMap,

  Arrays.asList/binarySearch/equals/fill/sort,

容器一般性功能須求:
 新增容器,刪除容器,查詢容器元素個數,列舉容器元素,
 新增元素,刪除元素,修改元素,查詢元素,擷取元素

各容器類別提供的方法:

 Vector >AbstractList >AbstractCollection, 存取有同步,有元素概念,容量無限
 *add/addElement/insertElementAt/addAll,
 *remove/removeElement/removeElementAt,
 clear/removeAllElements/removeAll/retainAll/removeRange,
 *get/set/firstElement/lastElement/elementAt/setElementAt,
 *indexOf/lastIndexOf,
 subList/toArray/copyInto,
 isEmpty/contains/containsAll/equals/hasCode,
 *size/setSize/trimToSize/capacity/ensureCapacity,
 toString/clone,
 --
 iterator/listIterartor

 Stack >Vector >AbstractList >AbstractCollection, 存取有同步
 *empty/push/peek/pop/search,
 --
 add/addElement/insertElementAt/addAll,
 remove/removeElement/removeElementAt,
 clear/removeAllElements/removeAll/retainAll/removeRange,
 get/set/firstElement/lastElement/elementAt/setElementAt,
 indexOf/lastIndexOf,
 subList/toArray/copyInto,
 isEmpty/equals/contains/containsAll/hasCode,
 size/setSize/trimToSize/capacity/ensureCapacity,
 toString/clone,
 --
 iterator/listIterartor

 ArrayList >AbstractList >AbstractCollection, 存取無同步,容量無限
 *add/addAll,
 *remove/removeRange/clear,
 *get/set,
 *indexOf/lastIndexOf,
 *isEmpty/contains,
 size/trimToSize/ensureCapacity,
 clone/toArray,
 --
 iterator/listIterartor/equals/hasCode,
 --
 containsAll/removeAll/retainAll/toString

 ArrayBlockingQueue >AbstractQueue >AbstractCollection 存取有同步,容量有限制
 clear/contains/drainTo/iterator/
 offer/peek/poll/put/remove/take
 remainingCapacity/size/
 toArray/toString
 --
 add/addAll/element/remove
 --
 containsAll/isEmpty/removeAll/retainAll

 PriorityQueue >AbstractQueue >AbstractCollection 存取無同步,容量無限
 add/clear/offer/peek/poll/remove
 comparator/iterator/size
 --
 addAll/element/remove
 --
 contains/containsAll/isEmpty/removeAll/retainAll
 toArray/toString

 LinkedList >AbstractSequentialList >AbstractList
     >AbstractCollection, 存取無同步,有頭尾概念,容量無限
 *add/addAll/addFirst/addLast,
 *remove/removeFirst/removeLast/clear,
 *get/set/getFirst/getLast,
 *contains/indexOf/lastIndexOf,
 size/listIterator/clone/toArray,
 --
 iterator
 --
 equals/hashCode/removeRange/subList
 containsAll/isEmpty/removeAll/retainAll/toString

 HashSet >AbstractSet >AbstractCollection, 存取無同步,無順序概念
 *add/remove/clear,
 *contains/isEmpty/size,
 *iterator/clone,
 --
 equals/hashCode/removeAll
 --
 addAll/containsAll/retainAll/toArray/toString

 TreeSet >AbstractSet >AbstractCollection, 存取無同步,有順序概念
 *add/addAll/remove/clear,
 *contains/isEmpty/size,
 *iterator/clone/comparator,
 *first/last,
 *headSet/tailSet/subSet,
 --
 equals/hashCode/removeAll
 --
 containsAll/retainAll/toArray/toString

 HashMap >AbstractMap, 存取無同步,存放成對物件,無順序概念
 *get/put/putAll/remove/clear,
 *isEmpty/containsKey/containsValue,
 values/keySet/entrySet,
 size/clone
 --
 equals/hashCode/toString

 TreeMap >AbstractMap, 存取無同步,存放成對物件,有順序概念
 *get/put/putAll/remove/clear,
 *containsKey/containsValue,
 *headMap,tailMap,subMap,
 values/keySet/entrySet,
 firstKey/lastKey,
 size/clone/comparator,
 --
 equals/hashCode/isEmpty/toString

 HashTable >Dictionaries, 存取有同步,存放成對鍵值組
 *get/put/putAll/remove/clear,
 *isEmpty/containsKey/containsValue/contains,
 keys/elements/values/keySet/entrySet,
 size/clone/equals/hasCode/rehash/toString
 --
 get/put/remove,
 elements/keys,
 size/isEmpty,

 Properties >HashTable >Dictionaries, 存取有同步,存放屬性鍵值組
 *getProperty/setProperty,
 *load/store/list,
 *propertyNames,
 --
 *get/put/putAll/remove/clear,
 *isEmpty/containsKey/containsValue/contains,
 keys/elements/values/keySet/entrySet,
 size/clone/equals/hasCode/rehash/toString



各容器介面提供的方法:

 Collection
 add/allAll/remove/removeAll/retainAll/clear,
 isEmpty/contains/containsAll/equals/hasCode/size,
 iterator/toArray,

 Queue >Collection 多了頭位置概念
 offer/
 poll/remove/
 peek/element/
 --
 add/allAll/remove/removeAll/retainAll/clear,
 isEmpty/contains/containsAll/equals/hasCode/size,
 iterator/toArray,

 List >Collection 多了任意位置概念
 add/allAll/remove,
 get/set,
 indexOf/lastIndexOf,
 listIterator/subList,
 --
 add/allAll/remove/removeAll/retainAll/clear,
 isEmpty/contains/containsAll/equals/hasCode/size,
 iterator/toArray,

 Set >Collection 多了不重複存放概念
 add/allAll/remove/removeAll/retainAll/clear,
 isEmpty/contains/containsAll/equals/hasCode/size,
 iterator/toArray,

 SortedSet >Set >Collection 多了順序概念
 first/last,
 headSet/tailSet/subSet,
 comparator,
 --
 add/allAll/remove/removeAll/retainAll/clear,
 isEmpty/contains/containsAll/equals/hasCode/size,
 iterator/toArray,

 Map
 get/put/putAll/remove/clear,
 isEmpty/containsKey/containsValue,
 values/keySet/entrySet,
 size/equals/hasCode,

 SortedMap >Map
 firstKey/lastKey,
 headMap/tailMap/subMap,
 comparator,
 --
 get/put/putAll/remove/clear,
 isEmpty/containsKey/containsValue,
 values/keySet/entrySet,
 size/equals/hasCode,



迭代列舉介面提供的方法:

 Enumeration 列舉介面,不能刪除列舉物件,只能往後列舉
 hasMoreElements/nextElement,

 Iterator 迭代介面,可刪除列舉物件,只能往後列舉
 hasNext/next/remove,

 ListIterator 清單迭代介面,可往前後列舉,及增刪改物件
 add/set/remove,
 hasNext/hasPrevious,
 next/previous,
 nextIndex,previousIndex,

可比較及比較器介面提供的方法:
java.lang.Comparable 可比較介面
 compareTo

java.util.Comparator 比較器介面
 compare/equals

how to connect codex app to remote ollama backend through caddy relay

如何讓 Codex App 連接公司架設的 LLM 從 Caddy 閘道安裝、遠端 Ollama API 金鑰,到 Codex 的 config.toml 組態設定,一次整理成可直接照做的流程。 前言 OpenAI 提供免費下載...

總網頁瀏覽量