Kinh Nghiệm về List, Set Map trong java Mới Nhất

Bạn đang tìm kiếm từ khóa List, Set Map trong java được Update vào lúc : 2022-12-27 15:13:07 . Với phương châm chia sẻ Kinh Nghiệm về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi Read tài liệu vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Tác giả lý giải và hướng dẫn lại nha.

Java Map

Java Map là một phần của collections framework. Đối tượng Java Map được sử dụng để chứa những cặp khóa-giá trị. Java Map không thể chứa những khóa giống hệt nhau tuy nhiên những giá trị giống nhau thì được phép.
Một số điểm lưu ý về Map trong Java đó là:

Map phục vụ 3 collection views set of keys, set of key-value mappings và collection of values

Map không đảm bảo về thứ tự khớp, tuy nhiên nó lại tùy Theo phong cách thực thi. Ví dụ, HashMap không đảm bảo thứ tự khớp nhưng TreeMap thì có.

Map dùng hashCode và những phương thức tương tự trên Khóa cho những phép toán get và put. Do vậy, những class hoàn toàn có thể biến hóa sẽ không còn phù phù thích hợp với những khóa của Map.Nếu những giá trị của hashCode hoặc tương tự thay đổi sau put, bạn sẽ không còn lấy giá tốt trị đúng trong phép toán get.

Các implementation class phổ cập của Map trong Java là HashMap, Hashtable, TreeMap, ConcurrentHashMap và LinkedHashMap.

AbstractMap class phục vụ skeletal implementation của Map interface, phần lớn những concrete class của Map mở rộng AbstractMap class và những phương thức thiết yếu phải implement.

Các phương thức của Java Map

Chúng ta hãy cùng tìm hiểu một số trong những phương thức quan trọng của Map.

int size(): trả về số ;ượng cặp khóa-giá trị trong Map.

boolean isEmpty(): trả về là nếu không còn cặp nào, nếu không thì false.

boolean containsValue(Object value): trả về là true nếu có tối thiểu một khóa được khớp với một giá trị rõ ràng, nếu không thì false.

V get(Object key): trả về giá trị được khớp với khóa đã đâ ra, nếu không còn cặp nào thì sẽ trả về null.

V put(K key, V value): thêm những cặp khóa-giá trị vào map. Nếu đã có một giá trị được khớp với khóa này thì thay giá trị. Phương thức này trả về giá trị trước đó tương ứng với khóa, hoặc null nếu khóa không còn gì khớp với khóa.

V remove(Object key): vô hiệu giá trị được khớp với khóa khỏi map này nếu nó tồn tại. Trả về giá trị trước này mà map khớp với khóa, hoặc null nếu map không chứa giá trị nào để khớp với khóa.

void putAll(Map m): Sao chép toàn bộ những cặp từ một map sang map này.

void clear(): vô hiệu tất cá những cặp khỏi Map.

Set keySet(): trả về Set view của toàn bộ những khóa trong Map. Key set này được hậu thuẫn bởi Map, vì vậy bất kỳ sửa đổi nào trong Map sẽ phản xạ lại key set và ngược lại.

Collection values(): trá về collection view của toàn bộ những giá trị trong Map. Tập hợp này được hậu thuẫn bởi Map, vì vậy bất kì thay đổi nào trong Map sẽ phản xạ lại tập hợp giá trị và ngược lại.

Set<Map.Entry> entrySet(): trả về Set view của những cặp trong Map. Set này được hậu thuẫn bởi Map, vì vậy bất kỳ sửa đổi nào trong Map sẽ phản xạ lại trong entry set và ngược lại.

Có một vài phương thức Java Map được trình làng trong Java 8.

default V getOrDefault(Object key, V defaultValue): trả về giá trị được khớp với một khóa rõ ràng, hoặc defaultValue nếu map không chứa giá trị nào để khớp với khóa.

default void forEach(BiConsumer action): thực thi action được đưa ra cho từng nguồn vào của map này.

default void replaceAll(BiFunction function): thay giá trị của mỗi entry với kết quả dẫn hàm được đưa ra cho entry đó.

default V putIfAbsent(K key, V value): nếu một khóa rõ ràng không được khớp với giá trị (hay được khớp với null), khớp nó với giá trị được đưa ra và trả về null, ngoài ra thì trả về giá trị hiện tại.

default boolean remove(Object key, Object value): Loại bỏ entry cho một khóa rõ ràng chỉ khi nó đang rất được khớp với một giá trị rõ ràng.

default boolean replace(K key, V oldValue, V newValue): Thay thế entry cho một khóa rõ ràng chỉ khi nó đang rất được khớp với một giá trị rõ ràng.

default V replace(K key, V value): Thay thế entry cho một khóa rõ ràng chỉ khi nó đang rất được khớp với một số trong những giá trị.

default V computeIfAbsent(K key, Function mappingFunction): Nếu khóa rõ ràng không được khớp vởi một giá trị (hoặc khớp với null), tính toán giá trị của nó sử dụng hàm mapping được đưa ra và nhập nó vòa map này trừ khi null.

default V computeIfPresent(K key, BiFunction remappingFunction): nếu tồn tại giá trị cho một khóa rõ ràng và không phải null, tính toán để khớp một giá trị mới cho cặp khóa và giá trị hiện tại được khớp với nó. Nếu hàm trả về null, thì việc khớp giá trị mới sẽ tiến hành vô hiệu

default V compute(K key, BiFunction remappingFunction): tính toán để khớp một giá trị mới cho cặp khóa và giá trị hiện tại được khớp với nó (hoặc null nếu không còn mức giá trị nào đang rất được khớp).

default V merge(K key, V value, BiFunction remappingFunction): nếu một khóa rõ ràng không được khớp với một giá trị hoặc đang khớp với null, khớp nó với một giá trị không phải null. Ngoài ra, thay thế giá trị được khớp với kết quả của hàm remapping được đưa ra, hoặc vô hiệu nếu kết quả là null.

Bạn sẽ để ý thấy toàn bộ những phương thức mới được thêm vào Java 8 Map interface là những phương thức mặc định với implementation. Điều này là để đảm bảo không xẩy ra những lỗi biên dịch khi những class implement Map interface.

Ví dụ

Dưới đấy là ví dụ về một chương trình đơn thuần và giản dị cho Java Map. Chúng ta sẽ sử dụng Map implementation class HashMap cho ví dụ này.

packagecom.journaldev.examples;

importjava.util.Collection;

importjava.util.HashMap;

importjava.util.Map;

importjava.util.Map.Entry;

importjava.util.Set;

publicclassMapExample

publicstaticvoidmain(String[]args)

Mapdata=newHashMap();

data.put(“A”,”A”);//putexample

data.put(“B”,”B”);

data.put(“C”,”C”);

data.put(“D”,null);//nullvalue

data.put(null,”Z”);//nullkey

Stringvalue=data.get(“C”);//getexample

System.out.println(“Key=C,Value=”+value);

value=data.getOrDefault(“E”,”DefaultValue”);

System.out.println(“Key=E,Value=”+value);

booleankeyExists=data.containsKey(null);

booleanvalueExists=data.containsValue(“Z”);

System.out.println(“keyExists=”+keyExists+”,valueExists=”+valueExists);

Set<Entry>entrySet=data.entrySet();

System.out.println(entrySet);

System.out.println(“datamapsize=”+data.size());

Mapdata1=newHashMap();

data1.putAll(data);

System.out.println(“data1mappings=”+data1);

StringnullKeyValue=data1.remove(null);

System.out.println(“data1nullkeyvalue=”+nullKeyValue);

System.out.println(“data1afterremovingnullkey=”+data1);

SetkeySet=data.keySet();

System.out.println(“datamapkeys=”+keySet);

Collectionvalues=data.values();

System.out.println(“datamapvalues=”+values);

data.clear();

System.out.println(“datamapisempty=”+data.isEmpty());

Output của chương trình trên sẽ là:

Key=C,Value=C

Key=E,Value=DefaultValue

keyExists=true,valueExists=true

[null=Z,A=A,B=B,C=C,D=null]

datamapsize=5

data1mappings=null=Z,A=A,B=B,C=C,D=null

data1nullkeyvalue=Z

data1afterremovingnullkey=A=A,B=B,C=C,D=null

datamapkeys=[null,A,B,C,D]

datamapvalues=[Z,A,B,C,null]

datamapisempty=true

Java Set

Java Set là một tập hợp những thành phần (hoặc đối tượng người dùng) mà không chứa những thành phần giống hệt nhau. Java Set là một interface mở rộng cho Collection interface. Không như List, Java Set KHÔNG PHẢI là một tập hợp ược sắp xếp, những thành phần của nó KHÔNG CÓ một thứ tự rõ ràng. Java SetKHÔNG phục vụ cho bạn quyền quyết định hành động vị trí để chèn một thành phần. Bạn không thể truy vấn vào thành phần bằng index và cả tìm kiếm thành phần trong list.

Trong phần này, toàn bộ chúng ta sẽ cùng bàn luận về một số trong những điểm quan trọng của Java Set:

    Java Set interface không phải là thành viên của Java Collections Framework.

    Không như List, SetKHÔNG được cho phép bạn sao chép những thành phần.

    Set chỉ được cho phép bạn thêm tối đa một thành phần null.

    Set interface có một phương thức mặc định trong Java 8: spliterator.

    Không như List và những array, Set KHÔNG tương hỗ những index hay vị trí những thành phần của nó.

    Set tương hỗ Generics và toàn bộ chúng ta nên sử dụng bất kể lúc nào hoàn toàn có thể. Sử dụng Generics với Set sẽ tránh khỏi lỗ ClassCastException trong runtime.

    Chúng ta hoàn toàn có thể sử dụng những implementation của Set interface để duy trì những thành phần độc nhất.

Sơ đồ Java Set Class

Java Set interface mở rộng Collection interface. Collection interface mở rộng Iterable interface. Một số Set implementation class thương dùng là HashSet, LinkedHashSet, TreeSet, CopyOnWriteArraySet và ConcurrentSkipListSet. AbstractSet phục vụ một skeletal implementation của Set interface để giảm thiếu công sức của con người implement Set.

Các phương thức Java Set

Trong phần này toàn bộ chúng ta sẽ cùng tìm hiểu một số trong những phương thức Java Set hữu dụng:

int size(): lấy số thành phần trong Set.

boolean isEmpty(): Kiểm tra xem Set trống hay là không.

boolean contains(Object o): Trả về true nếu Set chứa giá trị rõ ràng.

Iterator iterator(): Trả về một iterator qua những thành phần trong set này. Các thành phần được trả về không theo thứ tự rõ ràng.

Object[] toArray(): Trả về một array chứa toàn bộ những thành phần trong set này. Nếu set này đưa ra bất kì đảm bảo nào về thứ tự trả về những thành phần bởi iterator của nó, thì phương thức này phải trả về những thành phần theo như đúng thứ tự đó.

boolean add(E e): Thêm một thành phần rõ ràng vào set này nếu chưa tồn tại (phép toán tùy chọn).

boolean remove(Object o): Loại bỏ thành phần từ set này nếu nó tồn tại (phép toán tùy chọn).

boolean removeAll(Collection c): Loại bỏ từ set này toàn bộ những thành phần của nó được chữa trong một tập hợp rõ ràng (phép toán tùy chọn).

boolean retainAll(Collection c): Chỉ giữ lại những thành phần trong set này mà được chưa trong một tập hợp rõ ràng (phép toán tùy chọn).

void clear(): Loại bỏ toàn bộ những thành phần khỏi set.

Iterator iterator(): Trả về một iterator qua những thành phần trong set này.

Chuyển đổi Java Array sang Set

Không như List, toàn bộ chúng ta không thể trực tiếp quy đổi Java Set sang một array chính bới nó KHÔNG được implement bằng một Array.

Bởi vậy toàn bộ chúng ta không thê sử dụng Arrays class đẻ lấy view của array như thể set. Chúng ta hoàn toàn có thể đi theo một cách tiếp cận khác, đó là quy đổi array dang List sử dụng phương thức Arrays.asList(), tiếp theo đó dùng nó để tạo một Set. Bằng cách này, toàn bộ chúng ta hoàn toàn có thể quy đổi một Java Array sang Set theo 2 cách. Hãy cùng đi tìm hiểu từng cách một bằng những ví dụ đơn thuần và giản dị dưới đây.

Cách 1

Với cách này, thứ nhất toàn bộ chúng ta cần tạo một List với array đã cho và sử dụng nó để tạo một Set.

importjava.util.*;

publicclassArrayToSet

publicstaticvoidmain(String[]args)

String[]vowels=”a”,”e”,”i”,”o”,”u”;

SetvowelsSet=newHashSet>(Arrays.asList(vowels));

System.out.println(vowelsSet);

/**

*UnlikeList,SetisNOtbackedbyarray,

*sowecandostructuralmodificationwithoutanyissues.

*/

vowelsSet.remove(“e”);

System.out.println(vowelsSet);

vowelsSet.clear();

System.out.println(vowelsSet);

Cách 2
Theo cách này, toàn bộ chúng ta sẽ KHÔNG sử dụng List trung gian để tạo một từ một Array. Trước hết hãy tạo một HashSet trống, tiếp theo đó dùng Collections.addAll() để sao chép những thành phần array vào Set.

importjava.util.*;

publicclassArrayToSet2

publicstaticvoidmain(String[]args)

String[]vowels=”a”,”e”,”i”,”o”,”u”;

SetvowelsSet=newHashSet();

Collections.addAll(vowelsSet,vowels);

System.out.println(vowelsSet);

/**

*UnlikeList,SetisNOtbackedbyarray,

*sowecandostructuralmodificationwithoutanyissues.

*/

vowelsSet.remove(“e”);

System.out.println(vowelsSet);

vowelsSet.clear();

System.out.println(vowelsSet);

Output:

Sau khi chạy 2 chương trình trên, toàn bộ chúng ta sẽ có được những output như dưới đây.

Nội dung chính

    Các phương thức của Java Map
    Có một vài phương thức Java Map được trình làng trong Java 8.
    Sơ đồ Java Set Class
    Các phương thức Java Set
    Chuyển đổi Java Array sang Set
    Sắp xếp Java Set
    Các phép toán thông thường trong Java Set
    Chuyển đổi Java Set sang StreamVideo liên quan

[a,e,u,i,o]

[a,u,i,o]

[]

Chuyển đổi Java Set sang ArrayTrong phần này, toàn bộ chúng ta sẽ viết một chương trình để quy đổi một Set của những String thành một Array của String sử dụng phương thức Set.toArray().

importjava.util.*;

publicclassSetToArray

publicstaticvoidmain(String[]args)

Set<String<vowelsSet=newHashSet();

//addexample

vowelsSet.add(“a”);

vowelsSet.add(“e”);

vowelsSet.add(“i”);

vowelsSet.add(“o”);

vowelsSet.add(“u”);

//convertSettoArray

StringstrArray[]=vowelsSet.toArray(newString[vowelsSet.size()]);

System.out.println(Arrays.toString(strArray));

Output:

Sau khi chạy chương trình trên, toàn bộ chúng ta sẽ có được output như dưới đây

[a,e,u,i,o]

Sắp xếp Java Set

Như toàn bộ chúng ta đã biết, Set (HashSet) không tương hỗ sắp xếp trực tiếp những thành phần. Nó lưu và hiển thị những thành phần của nó theo thứ tự ngẫu nhiên.

Tuy nhiên, toàn bộ chúng ta sẽ có được một số trong những phương pháp để sắp xếp những thành phần của nó như sau:

importjava.util.*;

publicclassSetSortingExample

publicstaticvoidmain(String[]args)

SetintsSet=newHashSet();

Randomrandom=newRandom();

for(inti=0;ireturn(o2-o1););

System.out.println(“ReverseSorting:”+intsList2);

//Approach-3

SetsortedSet=newTreeSet(intsSet);

System.out.println(“SortedSet:”+sortedSet);

Output:

Sau khi chạy chương trình trên, toàn bộ chúng ta sẽ có được output như dưới đây.

[560,864,176,657,135,103,40,123,555,589]

NaturalSorting:[40,103,123,135,176,555,560,589,657,864]

BeforeSorting:[560,864,176,657,135,103,40,123,555,589]

ReverseSorting:[864,657,589,560,555,176,135,123,103,40]

SortedSet:[40,103,123,135,176,555,560,589,657,864]

Các phép toán thông thường trong Java Set

Các phép toán thường thấy của Java Set là add, addAll, clear, size,..v..v… Dưới đấy là những ví dụ đơn thuần và giản dị về ứng dụng những phương thức thông thường trong Java Set.

importjava.util.*;

publicclassSetCommonOperations

publicstaticvoidmain(Stringargs[])

Setvowels=newHashSet();

//addexample

vowels.add(“A”);

vowels.add(“E”);

vowels.add(“I”);

//WecannotinsertelementsbasedonindextoaSet

System.out.println(vowels);

Setset=newHashSet();

set.add(“O”);

set.add(“U”);

//appendingsetelementstoletters

vowels.addAll(set);

System.out.println(vowels);

//clearexampletoemptytheset

set.clear();

//sizeexample

System.out.println(“letterssetsize=”+vowels.size());

vowels.clear();

vowels.add(“E”);vowels.add(“E”);vowels.add(“I”);vowels.add(“O”);

System.out.println(“GivensetcontainsEelementornot?=”+vowels.contains(“E”));

Output:

[A,E,I]

[A,E,U,I,O]

letterssetsize=5

GivensetcontainsEelementornot?=true

JavaSetIterator

Dưới đấy là ví dụ về kiểu cách lặp qua Java Set.

importjava.util.*;

publicclassSetIteratorExample

publicstaticvoidmain(String[]args)

Setset=newHashSet();

for(inti=0;i<5;i++)

set.add(i);

Iteratoriterator=set.iterator();

//simpleiteration

while(iterator.hasNext())

inti=(int)iterator.next();

System.out.print(i+",");

System.out.println("n"+set);

//modificationofsetusingiterator

iterator=set.iterator();

while(iterator.hasNext())

intx=(int)iterator.next();

if(x%2==0)iterator.remove();

System.out.println(set);

//changingsetstructurewhileiterating

iterator=set.iterator();

while(iterator.hasNext())

//ConcurrentModificationExceptionhere

intx=(int)iterator.next();

if(x==1)set.add(10);

Chuyển đổi Java Set sang Stream

Dưới đấy là phương pháp chuyển một Java Set sang Stream để thực thi những phép toán theo yêu cầu của toàn bộ chúng ta.

importjava.util.*;

publicclassSetToStream

publicstaticvoidmain(String[]args)

SetvowelsSet=newHashSet();

//addexample

vowelsSet.add(“a”);

vowelsSet.add(“e”);

vowelsSet.add(“i”);

vowelsSet.add(“o”);

vowelsSet.add(“u”);

//convertsettostream

vowelsSet.stream().forEach(System.out::println);

Output:

a
e

u

i

o

://.youtube/watch?v=S7qxsZHPgIM

Reply
3
0
Chia sẻ

4153

Review List, Set Map trong java ?

Bạn vừa Read Post Với Một số hướng dẫn một cách rõ ràng hơn về Review List, Set Map trong java tiên tiến và phát triển nhất

Chia Sẻ Link Tải List, Set Map trong java miễn phí

Pro đang tìm một số trong những Chia SẻLink Download List, Set Map trong java Free.

Hỏi đáp vướng mắc về List, Set Map trong java

Nếu sau khi đọc nội dung bài viết List, Set Map trong java vẫn chưa hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Tác giả lý giải và hướng dẫn lại nha
#List #Set #Map #trong #java