2015-03-11 16 views
5

Tôi đã tìm kiếm các giải pháp về cách lấy cookie theo tên của họ và tất cả các giải pháp đều hướng đến việc sử dụng các câu lệnh for-loopsif. Xem mã bên dưới.Java: Có cách nào đơn giản để lấy cookie theo tên không?

for (Cookie cookie : cookies) { 
    if (cookie.getName().equals("<NAME>")) { 
     // do something here 
    } 
    if (cookie.getName().equals("<ANOTHER_NAME>")) { 
     // do something here 
    } 
    // and so on... 
} 

Có cách nào đơn giản hơn để lấy giá trị theo tên của chúng mà không phải thực hiện các vòng lặp và nếu không?

Tôi cần thực hiện một số quy trình "nhất định" cho một số cookie nhất định mà tôi muốn truy xuất Plus, tôi không muốn duyệt qua từng cookie! Có thể có 10 hoặc nhiều hơn và tất cả những gì tôi cần chỉ là ba hoặc cái gì đó.

+0

Đặt cookie vào 'Bản đồ ' (hoặc 'Multimap'). –

+0

Ồ, điều đó thực sự có thể hiệu quả: Tôi sẽ thử ngay! Cảm ơn: D –

+2

Lưu ý cho cử tri: Đừng downvote đơn giản chỉ vì đây là câu hỏi cấp độ mới bắt đầu. Điều này được định dạng đúng và được nêu rõ với người hỏi cho thấy một ví dụ về nỗ lực của họ. –

Trả lời

0

Logic (theo đề nghị của Matt Ball trong comments) sẽ là:

// ... 
Map<String, Cookie> cookieMap = new HashMap<>(); 
for (Cookie cookie : cookies) { 
    cookieMap.put(cookie.getName(), cookie); 
} 

Cookie firstRequiredCookie = cookieMap.get("<NAME>"); 
// do something with firstRequiredCookie 
Cookie nextRequiredCookie = cookieMap.get("<ANOTHER_NAME>"); 
// do something with nextRequiredCookie 
// ... 
+0

Cảm ơn mọi người! : D Quên câu hỏi tiếp theo của tôi, tôi nhận được nó ngay bây giờ: D THANK YOU! Tôi có thể đưa ra câu trả lời nhưng đại diện của tôi không cho phép tôi bỏ phiếu. –

0

tên Cookie là không độc đáo, vì vậy sử dụng một tên cookie như một chìa khóa bản đồ không phải là một phương pháp lý tưởng.

Vì tên cookie không phải là duy nhất nên đó có thể là lý do tại sao Java API này không bao giờ được cập nhật để cung cấp phương thức getCookieByName().

Các vấn đề liên quan