Tôi có thể muốn thuật lại câu hỏi thành "Làm cách nào để chọn mục đầu tiên trong một Multiset?" bởi vì có vẻ như Multiset đã được sắp xếp theo tần số.Chọn phần tử có số lần xuất hiện tối đa trong đa số
Tôi có một Multiset myList = Multiset.create();
[maa00 mfnt11 malignlft mbold mlt18 mfl x 3, caa00 cfnt11 calignlft cbold clt17 cfl]
Tôi không thể tìm thấy bất kỳ phương pháp nào như myList.getIndex (0). Xin lưu ý, cuối cùng, tôi cần số lượng phần tử có tần suất tối đa.
Có một lớp lót nào cho điều này không? Hay tôi phải lặp lại điều đó?
Cập nhật: Tôi nhận được tần số tối đa sử dụng:
myList.count(Multisets.copyHighestCountFirst(myList).asList().get(0)));
Nhưng điều này là quá chậm. Bạn có thể đề nghị, tôi nên sử dụng chính xác những gì?
Cập nhật 1: Sử dụng bản sao ở trênHighestCountPhương pháp đầu tiên đang chứng minh quá chậm. Trong một ví dụ của vòng lặp, nó được lấy 80 + mili giây trái ngược với trung bình 40 mili giây sử dụng mà không có nó. Trong vòng lặp lớn, tôi có nên lặp lại đơn giản không?
Cập nhật 2: Got nó làm việc sử dụng:
myList.count(myList.entrySet().iterator().next().getElement())
Nếu không có gần như bằng không ảnh hưởng đến hiệu suất. Tôi vẫn tự hỏi liệu có cách nào tốt hơn để làm điều đó không.
Phụ chú: Trong Python tôi đã làm như vậy với:
j = defaultdict(int)
for k in clList:
j[k] +=1
result1 = max(j.iteritems(), key=lambda x:x[1]) //count of frequency of item with max count
tôi giờ đã hiểu. Cảm ơn. – akshayb