Lớp nào sẽ hoạt động tốt nhất cho một danh sách các cặp không được sắp xếp? Tôi sẽ dùng một cặp (float, short) và sẽ cần để có thể thực hiện toán đơn giản (như nhân cặp với nhau để trả về một phao đơn, vv). Danh sách chỉ mất một đối số, và HashMap sẽ không cho phép các bản sao (theo như tôi biết). Có suy nghĩ gì không?Tạo danh sách các cặp trong java
Trả lời
Bạn có thể sử dụng lớp Entry<U,V>
rằng HashMap
sử dụng nhưng bạn sẽ bị mắc kẹt với ngữ nghĩa của getKey
và getValue
:
List<Entry<Float,Short>> pairList = //...
sở thích của tôi là tạo ra đơn giản riêng Pair
lớp học của bạn:
public class Pair<L,R> {
private L l;
private R r;
public Pair(L l, R r){
this.l = l;
this.r = r;
}
public L getL(){ return l; }
public R getR(){ return r; }
public void setL(L l){ this.l = l; }
public void setR(R r){ this.r = r; }
}
Sau đó, tất nhiên tạo một số List
sử dụng lớp mới này, ví dụ:
List<Pair<Float,Short>> pairList = new ArrayList<Pair<Float,Short>>();
Bạn cũng có thể tạo List
s trong số List
s, nhưng sẽ khó thực thi kích thước (bạn chỉ có cặp) và bạn sẽ được yêu cầu, như với mảng, có kiểu gõ nhất quán.
Sử dụng Danh sách các phiên bản lớp tùy chỉnh. Lớp tùy chỉnh là một số loại Ghép hoặc Phối hợp hoặc bất kỳ thứ gì. Sau đó chỉ cần
List<Coordinate> = new YourFavoriteListImplHere<Coordinate>()
Cách tiếp cận này có ưu điểm là nó làm cho thỏa mãn yêu cầu này "biểu diễn toán học đơn giản (như nhân đôi với nhau để trả về một phao duy nhất, vv)" sạch, bởi vì lớp tùy chỉnh của bạn có thể có phương pháp cho bất cứ điều gì toán học bạn cần làm ...
Có vẻ như bạn cần tạo lớp cặp của riêng mình (xem discussion here). Sau đó, hãy tạo Danh sách lớp học mà bạn đã tạo
Tương tự như những gì Mark E đã đề xuất, bạn phải tự mình tạo ra. Chỉ để giúp bạn một chút, có một bài viết gọn gàng http://gleichmann.wordpress.com/2008/01/15/building-your-own-literals-in-java-tuples-and-maps/ cung cấp cho bạn một cách thực sự gọn gàng để tạo các bộ dữ liệu và bản đồ có thể là thứ bạn có thể muốn xem xét.
Nếu bạn muốn đa dạng, bạn có thể đặt nó trong bản đồ ánh xạ cặp với số tiền lớn. Bằng cách này sẽ chỉ có một cặp giá trị đã cho, nhưng nó có thể đại diện cho nhiều lần xuất hiện.
Sau đó, nếu bạn có nhiều giá trị lặp lại và muốn thực hiện một số thao tác trên tất cả các giá trị, bạn có thể tiết kiệm rất nhiều tính toán.
chỉ sửa chữa một số lỗi nhỏ trong mã Mark Elliot:
public class Pair<L,R> {
private L l;
private R r;
public Pair(L l, R r){
this.l = l;
this.r = r;
}
public L getL(){ return l; }
public R getR(){ return r; }
public void setL(L l){ this.l = l; }
public void setR(R r){ this.r = r; }
}
- 1. Làm cách nào để tạo một danh sách các cặp đối tượng từ hai danh sách trong C#?
- 2. sử dụng Python giảm trên danh sách các cặp
- 3. nhầm lẫn về danh sách và cặp
- 4. R. cách tạo danh sách các danh sách trong R?
- 5. Thao tác trên mỗi cặp phần tử trong danh sách
- 6. "Khởi tạo" một Danh sách bằng Java?
- 7. Java: lặp qua danh sách các danh sách?
- 8. Danh sách liên kết danh sách liên kết trong Java
- 9. Tìm kiếm bằng Python trong danh sách các danh sách
- 10. Khởi tạo mảng Java trong danh sách đối số
- 11. Thêm một danh sách vào danh sách khác trong java?
- 12. Tạo danh sách các danh sách theo cách pythonic
- 13. tạo danh sách ra khỏi tệp văn bản trong java?
- 14. python: tạo danh sách các hàng từ danh sách
- 15. Nhận tất cả các kết hợp các cặp từ một danh sách trong Ruby
- 16. Nối tiếp danh sách cặp khóa/giá trị thành XML
- 17. Khởi tạo danh sách các đối tượng trong Python
- 18. Tính toán tất cả các cặp mặt hàng có thể có từ hai danh sách?
- 19. Danh sách các giá trị enum trong java
- 20. Làm cách nào để tạo danh sách tất cả các cặp dữ liệu duy nhất trong R?
- 21. giải nén một danh sách/tuple của cặp thành hai danh sách/tuples
- 22. Chuyển đổi bảng băm thành danh sách các cặp (khóa, giá trị) trong OCaml
- 23. Tạo danh sách trong Erlang
- 24. Danh sách con được tạo trong danh sách
- 25. Làm cách nào để lặp qua danh sách theo cặp?
- 26. Danh sách hai chiều trong Java
- 27. Cons'ing một danh sách trong Java
- 28. Tìm tập hợp các cặp tương ứng với danh sách các khoản tiền
- 29. Danh sách khóa Java UIManager
- 30. Tạo một "cái nhìn" của một Java Danh sách
Nhưng tôi chắc chắn sẽ chỉ làm cho lớp giữ chỗ và sau đó thêm các trường hợp nó vào một list-- gọi một spade một thuổng ... –
Hãy nói rằng tôi sẽ làm điều này mà không có một lớp học mới. Tôi đang nghĩ đến việc chỉ chạy hai danh sách loại thích hợp. Tại sao nó phàn nàn khi tôi làm: Danh sách riêng floatList = new List (); nhưng không phải khi tôi rời khỏi toán tử gán và chỉ có danh sách riêng floatList; ? Nó vẫn cần phải được khởi tạo phải không? –
V1rtua1An0ma1y
@ V1rtua1An0ma1y: vì 'Danh sách' là một giao diện, bạn cần thực hiện, như, nói,' ArrayList' hoặc 'LinkedList'. –