Bộ sưu tập Java cheat sheet PDF

Một ArrayList cũng có thể được tạo bằng Bộ sưu tập hiện có. ArrayList mới được tạo sẽ chứa tất cả các phần tử theo cùng thứ tự trong bộ sưu tập ban đầu

phương pháp

e = phần tử (Đối tượng), i = chỉ mục, c = Bộ sưu tập

  • danh sách. kích thước();
  • danh sách. chứa(e);
  • danh sách. indexOf(e);
  • danh sách. lastIndexOf(e);
  • danh sách. lấy tôi);
  • danh sách. bộ(i,e);
  • danh sách. thêm(e);
  • danh sách. thêm(i,e);
  • danh sách. addAll(c) // Thêm bộ sưu tập
  • danh sách. addAll(i, c)
  • danh sách. remove(i);//trả về bool. trở lại tại chỉ số

ví dụ. mảng. remove(3) -> thao tác này sẽ xóa phần tử ở chỉ mục 3

  • danh sách. loại bỏ (e) hoặc danh sách. loại bỏ (đối tượng);

// trả về bool. Điều này rất khó trong trường hợp danh sách số nguyên, hãy chuyển đối tượng Số nguyên

GHI CHÚ. Nó sẽ chỉ loại bỏ lần xuất hiện đầu tiên của đối tượng

ví dụ. mảng. remove(new Integer(3)) -> thao tác này sẽ xóa lần xuất hiện đầu tiên của đối tượng có giá trị 3

Chúng ta đã thấy rằng

list.replaceAll((element) -> element.toUpperCase());
5 xóa một phương thức tại chỉ mục đã cho và
list.replaceAll((element) -> element.toUpperCase());
6 xóa đối tượng đã cho khỏi ArrayList. Giả sử chúng ta có một ArrayList chứa năm phần tử i. e [13, 21, 43, 2, 9]. Bây giờ, nếu chúng ta thực hiện
list.replaceAll((element) -> element.toUpperCase());
7, thì phương thức quá tải nào sẽ được gọi.
list.replaceAll((element) -> element.toUpperCase());
5 sẽ được gọi hay
list.replaceAll((element) -> element.toUpperCase());
6 sẽ được gọi? . Nếu chúng ta muốn xóa phần tử 2, chúng ta nên gọi
List<String> list = new CopyOnWriteArrayList<>();
1 vì các phần tử được lưu trữ trong ArrayList dưới dạng đối tượng chứ không phải nguyên hàm

  • danh sách. removeRange(int from Index, int to Index)

Java list remove range

Xóa phạm vi
  • list.removeAll(Collection c)

Chúng ta có thể sử dụng phương thức

List<String> list = new CopyOnWriteArrayList<>();
2 để xóa, khỏi danh sách đã cho, tất cả các phần tử có trong bộ sưu tập đã chỉ định

  • danh sách. toArray();
  • bộ sưu tập. sắp xếp (danh sách);
  • bộ sưu tập. sắp xếp (danh sách, Bộ sưu tập. ReverseOrder());

Lớp

List<String> list = new CopyOnWriteArrayList<>();
3 chứa một phương thức
List<String> list = new CopyOnWriteArrayList<>();
4, được sử dụng để sắp xếp một ArrayList. Phương thức này lấy ArrayList làm đầu vào và sắp xếp nó theo thứ tự tăng dần

Trong phương thức

List<String> list = new CopyOnWriteArrayList<>();
4, T đại diện cho loại đối tượng được lưu trữ trong ArrayList. Phương thức
List<String> list = new CopyOnWriteArrayList<>();
6 lấy một ArrayList của các đối tượng loại T làm đầu vào. Điều bắt buộc là T phải triển khai giao diện So sánh được;

  • List sortedList = list.stream().sorted().collect(Collectors.toList()); // USING STREAM
  • List sortedList = list.stream().sorted(Comparator.reverseOrder())

sưu tầm(Người sưu tầm. liệt kê());

ArrayList có thể được sắp xếp theo thứ tự ngược lại bằng cách sử dụng các luồng bỏ qua phương thức

List<String> list = new CopyOnWriteArrayList<>();
7 đến phương thức
List<String> list = new CopyOnWriteArrayList<>();
8

  • danh sách. clear() //xóa tất cả phần tử khỏi danh sách
  • list.replaceAll(UnaryOperator operator)
list.replaceAll((element) -> element.toUpperCase());

THÔNG TIN NHANH

  • Liệt kê các chỉ mục bắt đầu từ '0', giống như chỉ mục mảng
  • Danh sách cho phép “null”
  • Danh sách hỗ trợ Generics và chúng ta nên sử dụng nó bất cứ khi nào có thể. Sử dụng Generics với Danh sách sẽ tránh được ClassCastException khi chạy

copyOnWriteArrayList — phiên bản an toàn cho luồng của list

List<String> list = new CopyOnWriteArrayList<>();

HashSet set= new HashSet<>();

  • bộ. thêm(e);

Nếu phần tử chưa có, thì phương thức này đặt phần tử và trả về

List<String> list = new CopyOnWriteArrayList<>();
9. Nếu phần tử đã có sẵn, thì nó trả về
list.replaceAll((element) -> element.toUpperCase());
70

  • bộ. chứa(e);
  • bộ. xóa(e);
  • bộ. xa lạ();
  • bộ. isEmpty();

SẮP XẾP. KHÔNG THỂ TRONG HASHSET

Do HashSet lưu trữ các phần tử theo thứ tự ngẫu nhiên nên không thể lưu trữ các phần tử trong HashSet theo thứ tự được sắp xếp. Nếu chúng ta muốn sắp xếp các phần tử của HashSet, thì chúng ta nên chuyển đổi nó thành một số Bộ sưu tập khác, chẳng hạn như Danh sách, TreeSet hoặc LinkedHashSet

list.replaceAll((element) -> element.toUpperCase());
7

HashSet không cho phép các phần tử trùng lặp

HashSet chỉ cho phép một phần tử null

Các phần tử được chèn theo thứ tự ngẫu nhiên trong HashSet

HashSet được hỗ trợ nội bộ bởi HashMap

công suất ban đầu là 16 và hệ số tải là 0. 75

TreeSet set= new TreeSet<>();

list.replaceAll((element) -> element.toUpperCase());
9

S do tất cả các phần tử được lưu trữ theo thứ tự được sắp xếp trong TreeSet, nên việc lưu trữ các phần tử phải triển khai giao diện Có thể so sánh hoặc Bộ so sánh tùy chỉnh trong khi tạo TreeSet.

  • bộ. thêm (e)
  • bộ. addAll(Bộ sưu tập c);
  • bộ. first() // Lấy phần tử đầu tiên trong TreeSet
  • bộ. Cuối cùng();
  • bộ. headSet(40) // Lấy tất cả các phần tử nhỏ hơn 40. 40 không bao gồm
  • bộ. tailSet(40) // Lấy tất cả các phần tử lớn hơn 40. 40 không bao gồm
  • bộ. xóa(e);
  • bộ. isEmpty();
  • bộ. kích thước();
  • bộ. chứa(e);

TreeSet không cho phép các phần tử trùng lặp

Lớp TreeSet không cho phép phần tử null

Vì các phần tử được lưu trữ trong một cây nên thời gian truy cập và truy xuất khá nhanh trong TreeSet

Các phần tử được lưu trữ theo thứ tự tăng dần trong TreeSet

Sự khác biệt giữa HashSet và TreeSet
  1. HashSet cho phép một phần tử null, trong khi TreeSet không cho phép phần tử null
  2. Các phần tử được lưu trữ theo thứ tự ngẫu nhiên trong HashSet, trong khi nó được lưu trữ theo thứ tự được sắp xếp trong TreeSet
  3. HashSet nhanh hơn Treeset cho các thao tác như thêm, xóa, chứa, kích thước, v.v.

HashMap map= new HashMap<>();

k = khóa, v = giá trị

  • bản đồ. đặt(k,v);
  • bản đồ. putIfAbsent(k,v);
  • bản đồ. putAll(bản đồ khác);
  • bản đồ. get(k) // trả về v ánh xạ tới k
  • bản đồ. getOrDefault(khóa, giá trị mặc định);
list.replaceAll((element) -> element.toUpperCase());
0
  • bản đồ. remove(k) // trả về v và xóa nó
  • bản đồ. kích thước();
  • bản đồ. chứaKey(k);
  • bản đồ. chứaValue(v);
list.replaceAll((element) -> element.toUpperCase());
1

Lặp qua HashMap

  • bản đồ. mụcSet()
list.replaceAll((element) -> element.toUpperCase());
2
  • bản đồ. keySet() // Phương thức này trả về một Tập hợp chứa tất cả các khóa có trong Bản đồ
  • bản đồ. values() // Phương thức này trả về một Collection chứa tất cả các giá trị có trong Map
list.replaceAll((element) -> element.toUpperCase());
3

Thay thế

  • bản đồ. thay thế (K khóa, V oldValue, V newValue);

// thay thế giá trị của khóa k nếu giá trị của khóa giống với giá trị cũ

  • bản đồ. thay thế (khóa K, giá trị mới V);
  • bản đồ. replaceAll( nhị phân);
list.replaceAll((element) -> element.toUpperCase());
4

Sử dụng phương thức

list.replaceAll((element) -> element.toUpperCase());
71#

Phương thức

list.replaceAll((element) -> element.toUpperCase());
71 nhận ba tham số. khóa, giá trị cũ và giá trị mới. Nó kiểm tra xem giá trị hiện tại của khóa có bằng với
list.replaceAll((element) -> element.toUpperCase());
73 được cung cấp trong tham số hay không. Nếu có thì nó sẽ thay thế giá trị bằng
list.replaceAll((element) -> element.toUpperCase());
74 và trả về
List<String> list = new CopyOnWriteArrayList<>();
9;

Sử dụng phương thức

list.replaceAll((element) -> element.toUpperCase());
77#

Phương thức này chỉ nhận hai tham số. một khóa và một giá trị. Nó thay thế giá trị của khóa bằng giá trị mới được cung cấp dưới dạng tham số và trả về giá trị cũ. Nếu không có khóa, thì nó trả về

list.replaceAll((element) -> element.toUpperCase());
78

Sử dụng phương thức

list.replaceAll((element) -> element.toUpperCase());
79#

Phương pháp này lấy BiFunction làm đầu vào và thay thế các giá trị của tất cả các khóa bằng kết quả của hàm đã cho. Giả sử chúng ta cần thêm 10 vào giá cổ phiếu của mỗi công ty. Thay vì cập nhật giá trị cho từng cổ phiếu một, chúng ta có thể sử dụng phương pháp này. Biểu thức lambda để thực hiện tác vụ này sẽ như thế này

list.replaceAll((element) -> element.toUpperCase());
90

Các phím phải là duy nhất

HashMap chỉ cho phép một khóa

list.replaceAll((element) -> element.toUpperCase());
78

Các giá trị có thể là null hoặc trùng lặp

Các phím được lưu trữ theo thứ tự ngẫu nhiên

công suất ban đầu là 16 và hệ số tải là 0. 75

CâyBản Đồ. TreeMap là một lớp trong gói

list.replaceAll((element) -> element.toUpperCase());
92 lưu trữ các khóa theo thứ tự được sắp xếp. Một số tính năng của TreeMap là

TreeMap treeMap = new TreeMap<>();TreeMap reverseMap = new TreeMap<>(Comparator.reverseOrder());
list.replaceAll((element) -> element.toUpperCase());
0
  • đặt(k,v);
  • putAll(bản đồ);
  • lấy(k);
  • loại bỏ (k)
  • firstKey() // cung cấp khóa nhỏ nhất (vì TreeMap lưu trữ các phần tử theo thứ tự được sắp xếp)
  • firstEntry() // đưa ra Entry nhỏ nhất
  • lastKey() // cung cấp khóa lớn nhất
  • lastEntry() // giva mục nhập lớn nhất
  • thay thế (khóa, giá trị);
  • thay thế (khóa, giá trị cũ, giá trị mới);

Các mục trong TreeMap được sắp xếp theo thứ tự tự nhiên của các khóa của nó

Nó không cho phép khóa null, tuy nhiên có thể có giá trị null

TreeMap không phải là thread-safe, mặc dù nó có thể được làm cho thread-safe bằng cách sử dụng phương thức

list.replaceAll((element) -> element.toUpperCase());
93 của lớp Collections

Vì TreeMap lưu trữ các khóa theo thứ tự được sắp xếp, nên các đối tượng mà chúng ta đang lưu trữ trong TreeMap nên triển khai giao diện Có thể so sánh hoặc chúng ta nên chuyển một Bộ so sánh trong khi tạo đối tượng TreeMap

PriorityQueue pq = new PriorityQueue<>()

PriorityQueue minHeap = new PriorityQueue();

PriorityQueue maxHeap = new PriorityQueue((a,b) -> b-a); //(max elements on top/descending order)

Giả sử bạn muốn bộ so sánh của riêng mình, ví dụ: pq có các khóa của sơ đồ băm vì nó là các phần tử và chúng cần được sắp xếp theo các giá trị của chúng trong sơ đồ băm

pq = new PriorityQueue<>((a,b) -> bản đồ. get(a)-map. lấy(b));

Bạn có thể xác định riêng bộ so sánh của riêng mình (ví dụ có tên là MyComparator)

pq = new PriorityQueue<>(new MyComparator());

Chuỗi s = “xin chào”;

  • s. toCharArray();
  • s. indexOf(chuỗi con);
  • s. chatAt(i);
  • s. Đến trường hợp trên();
  • s1. bằng(s2); . ĐỪNG LÀM “==” LẠI VÀ TÌM HIỂU TẠI SAO CÂU TRẢ LỜI LIÊN TỤC KHÔNG ĐÚNG
  • s1. bằngIgnoreCase(s2);
  • s1. so sánhTo(s2);
  • s1. chứa(s2);
  • s. chiều dài();
  • s. startedWith(“địa ngục”); . endWith(“ello”), trả về boolean
  • s. chuỗi con (bao gồm, loại trừ); . chỉ số bao gồm, bao gồm, loại trừ. chỉ số độc quyền, loại trừ
  • str_array = s. split(“ “);//trả về mảng chuỗi cách nhau bởi dấu cách. “Xin chào thế giới” trả về [“Xin chào”,”thế giới”]

Trình lặp itr = tên_mảng. trình vòng lặp(); . trình vòng lặp()

  • nó. hasNext();
  • nó. tiếp theo();
  • nó. gỡ bỏ();

Ngẫu nhiên r = Ngẫu nhiên mới();

  • r. nextInt(n);

HOẶC

  • môn Toán. ngẫu nhiên(); . 0 và 1. 0

Stack s = new Stack<>();

  • s. đẩy();
  • s. nhìn lén();
  • s. nhạc pop();
  • s. trống rỗng();
  • s. kích thước();

Queue q = new ArrayList<>();

  • q. thêm(e);
  • q. gỡ bỏ();
  • q. thăm dò ();
  • q. nhìn lén();
  • q. kích thước();

DANH SÁCH LIÊN KẾT.

list.replaceAll((element) -> element.toUpperCase());
1Các phương pháp hữu ích khác
  • Tính cách. isDigit(c);
  • Tính cách. isAlphabetic(c);
  • số nguyên. parseInt(str);
  • Trôi nổi. parseFloat(str);
  • số nguyên. toBinaryString(num);
  • Mảng. asList(mảng);
  • số nguyên. MIN_VALUE // trả về int nhỏ nhất có thể trong Java
  • sự vật. Mã Băm();
  • Danh sách số nguyên. lấy tôi). intValue();
so sánh
  • Mảng. sắp xếp (mảng, (a. b)->b-a);
  • Xác định MySort để sử dụng trong các phương pháp sắp xếp khác (ví dụ sắp xếp mảng dựa trên phần tử đầu tiên của chúng)
list.replaceAll((element) -> element.toUpperCase());
2

Và sau đó sử dụng nó như

  • Mảng. sắp xếp (mảng, MySort)
  • Đối với ArrayLists, Bộ sưu tập. sắp xếp (danh sách mảng, MyArrListSort());
Có thể so sánh VS Bộ so sánh

phương thức

list.replaceAll((element) -> element.toUpperCase());
94 sắp xếp Danh sách đã cho theo thứ tự tăng dần. Nhưng câu hỏi đặt ra là, làm thế nào để phương thức
list.replaceAll((element) -> element.toUpperCase());
95 quyết định phần tử nào nhỏ hơn và phần tử nào lớn hơn?

Mỗi lớp trình bao bọc (Số nguyên, Đôi hoặc Dài), lớp Chuỗi và lớp Ngày triển khai một giao diện có tên là Có thể so sánh. Giao diện này chứa một phương thức

list.replaceAll((element) -> element.toUpperCase());
96 được sử dụng bởi các phương thức sắp xếp để sắp xếp Bộ sưu tập. Phương thức này trả về một số nguyên âm, 0 hoặc một số nguyên dương nếu đối tượng này nhỏ hơn, bằng hoặc lớn hơn đối tượng được truyền dưới dạng đối số

list.replaceAll((element) -> element.toUpperCase());
3

Nếu chúng ta sử dụng phương thức

list.replaceAll((element) -> element.toUpperCase());
97 để sắp xếp ArrayList, thì lớp có các đối tượng được lưu trữ trong ArrayList phải triển khai giao diện So sánh. Nếu ArrayList lưu trữ một Số nguyên, Dài hoặc Chuỗi thì chúng ta không cần lo lắng vì các lớp này đã triển khai giao diện So sánh. Nhưng nếu ArrayList lưu trữ một đối tượng lớp tùy chỉnh, thì lớp đó phải triển khai giao diện So sánh được

Nếu chúng ta cần sự linh hoạt trong việc sắp xếp, chúng ta nên sử dụng giao diện Bộ so sánh thay vì giao diện Có thể so sánh. Giao diện Bộ so sánh có một phương thức,

list.replaceAll((element) -> element.toUpperCase());
98, lấy hai đối tượng, o1 và o2 làm tham số. Nó trả về -1 nếu o1 << o2, 1 nếu o1 >> o2 và 0 nếu o1 bằng o2

Nếu chúng ta cần sử dụng giao diện Bộ so sánh, thì chúng ta không thể sử dụng phương pháp

List<String> list = new CopyOnWriteArrayList<>();
6 vì
list.replaceAll((element) -> element.toUpperCase());
00 nên triển khai giao diện So sánh. Có một phương thức quá tải khác,
list.replaceAll((element) -> element.toUpperCase());
01, lấy danh sách cũng như đối tượng Bộ so sánh làm đầu vào. Sau đó, nó sắp xếp Danh sách trên cơ sở logic, được cung cấp trong triển khai Bộ so sánh