01/10/2018, 17:14
Lấy các phần tử không trùng nhau trong mảng
Anh chị cho e hỏi với a, trong python có hàm set() để lấy ra các giá trị trong list không lặp thì trong java có hàm nào thực hiện chức năng tương tự không ạ?
em cảm ơn trước ạ.
Bài liên quan
Không liên quan đến Java nhưng
bạn đang hiểu sai rồi.
https://docs.python.org/3/library/functions.html#func-set
Trả về 1 object set, với element lấy ra từ
iterable
.iterable
không nhất thiết phải là list.Vậy set object là cái gì?
https://docs.python.org/3/library/stdtypes.html#types-set
Một thứ gì đó chứa các object hash được và phân biệt.
Như trong các ví dụ trên, kết quả trả về là 1 set object chứa các giá trị phân biệt trong các iterator nạp vào.
Thấy có distinct, hashable, thử search google qua 1 vòng:
Print All Distinct Elements of a given integer array - GeeksforGeeks
Given an integer array, print all distinct elements in array. The given array may contain duplicates and the output should print every element only once.… Read More »
Kết quả: Tống hết array vào
HashSet<>
. Tất cả những phần tử trong HashSet là các phần tử phân biệt của array.Demo xem ở link trên.
Xem link dưới để biết cụ thể hơn về HashMap:
HashSet trong java - VietTuts
Lớp HashSet trong java được sử dụng để tạo một bộ sưu tập sử dụng bảng băm để lưu trữ. HashSet chỉ chứa các phần tử duy nhất Sự khác nhau giữa List và Set.
Vâng, cảm ơn ạ,
Không có bạn ạ Nhưng chúng ta có thể tự tạo một hàm để làm điều đó
Giả sử mình có một
ArrayList<Integer> arr
thì chúng ta có thể dùng cách này để tìm phần tử không trùng:Giải thích:
arr.indexOf(i)
sẽ trả về vị trí đầu tiên của phần tử i trongArrayList arr
.arr.lastIndexOf(i)
sẽ trả về vị trí cuối cùng của phần tử i trongArrayList arr
.Vậy thì nếu
arr.indexOf(i) == arr.lastIndexOf(i)
thì có phải là vị trí đầu tiên trùng với vị trí cuối cùng ==> Phần tử đó chỉ xuất hiện 1 lần trongArrayList arr
P/s: Cách của mình phải sử dụng
ArrayList
. Nếu bạn muốn dùng choint[]
thì sẽ phải chạy thêm vòng for để add phần tử vàoArrayList
nhéBỏ collection vào constructor của
Set
, tuỳ vào constructor dùng interfaceComparable
hay interfaceComparator
để hiện thựcConstructor của
TreeSet
, lấy từ JavaDocshttps://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html
Danh sách vài class implement interface
Collection
AbstractCollection
AbstractList
ArrayList
Vector
AbstractQueue
AbstractSet
EnumSet
HashSet
TreeSet
vâng, cảm ơn ạ, mk làm được r ạ,
vâng, cảm ơn ạ, mk làm được r ạ
Theo mình thì tạo List trước sau đó chuyển List thành Set là ok à
stackoverflow.com
Easiest way to convert a List to a Set in Java