Có tương đương .NET của Java List.subList()
hoạt động trên IList<T>
không?.NET tương đương với List.subList của Java()?
Trả lời
sử dụng LINQ
list.Skip(fromRange).Take(toRange - fromRange)
Đối với loại chung List<T>
, đó là phương pháp GetRange(int, int)
.
Chỉnh sửa: lưu ý rằng đây là bản sao nông, không phải là 'chế độ xem' trên bản gốc. Tôi không nghĩ C# cung cấp chức năng chính xác đó.
Edit2: như Kamarey chỉ ra, bạn có thể có một cái nhìn chỉ đọc:
List<int> integers = new List<int>() { 5, 6, 7, 8, 9, 10, 11, 12 };
IEnumerable<int> view = integers.Skip(2).Take(3);
integers[3] = 42;
foreach (int i in view)
// output
trên sẽ in 7, 42, 9.
Từ tài liệu MSDN (http://msdn.microsoft.com/en-us/library/21k0e39c.aspx) dường như không giống nhau: GetRange() trả về một bản sao nông, trong khi subList() trả về một khung nhìn (tức là những thay đổi đối với subList() sẽ được phản ánh trong Danh sách gốc!) –
ok bạn đã đúng. Không chắc chắn nếu đây là yêu cầu chính xác, nhưng tôi sẽ chỉnh sửa câu trả lời của tôi để phản ánh điều đó. – Razzie
GetRange
là câu trả lời của bạn
Một lần nữa: nó không * chính xác * cùng một điều, vì nó trả về một bản sao nông thay vì một cái nhìn. Trả lại một khung nhìn cho phép một số thủ thuật khá tiện lợi (nó làm cho nó không cần thiết để cung cấp một phương thức RemoveRange() chẳng hạn, vì nó có thể dễ dàng được viết dưới dạng list.subList (x, y) .clear()). –
Tôi phải thành thật nói rằng tôi không thực sự thấy những lợi ích. Ngoài ra, removeRange() và subList.clear() không giống như điều tương tự, vì thanh toán bù trừ không được giống như loại bỏ dải ô. Nhưng oh well :-) – Razzie
Ngay khi bạn mò mẫm khái niệm rằng subList() trả về một cái nhìn vào List gốc (và không phải là một bản sao), nó sẽ trở nên rõ ràng rằng someList.subList (1,3) .clear() sẽ loại bỏ các đối tượng khỏi Danh sách gốc. Và phần quan trọng nhất không phải là tốt hơn hay không, nhưng subList() và GetRange() không làm điều tương tự, vì vậy chúng không được trình bày tương đương (ít nhất là không có từ chối). –
- 1. Java Tương đương với DateTime.Parse của .NET?
- 2. Java tương đương với MEF trong .NET
- 3. . Net tương đương với Java AssertionError
- 4. Java tương đương với .NET System.InvalidOperationException
- 5. Java tương đương với NotSupportedException .Net
- 6. C++ tương đương với Task.Delay của .NET?
- 7. Tương đương TreeSet của Java tương đương với Python?
- 8. Tương đương .NET của NumberFormatException của Java là gì?
- 9. Tương đương .NET của StrCmpLogicalW
- 10. .net tương đương với htmlunit?
- 11. Tương đương với .NET JAXB?
- 12. .NET tương đương hoặc thay thế cho GlyphVector của Java?
- 13. Tương đương java của AggregateException từ .net là gì?
- 14. Có một .NET tương đương với Java Web Start không?
- 15. .NET tương đương với Java wildcard (IInterf <?>)?
- 16. String.Format (.NET) tương đương trong Java?
- 17. C# tương đương với charAt của Java()?
- 18. Java tương đương với struct.pack của Python?
- 19. Java tương đương với String.match JavaScript của()
- 20. Java tương đương với preg_replace_callback của PHP
- 21. .NET tương đương với kiến trúc web Java hiện đại
- 22. Là một gói Java tương đương với một assembly .Net?
- 23. Tương đương với TreeSet trong Java tới C# .net
- 24. tương đương .NET của @Deprecated trong java là gì?
- 25. Tương đương với SoftReference trong .net?
- 26. Có tương đương Java của SignalR không?
- 27. callgrind tương đương với java?
- 28. Java Tương đương với Reflection.Emit
- 29. Java tương đương với OpenLayers
- 30. java tương đương với mkstemp
Điều này có trả lại chế độ xem vào Danh sách gốc hoặc bản sao của phạm vi không? –
Hoạt động trên IList, không chỉ trên Danh sách, đây là những gì tôi đang tìm kiếm. – ripper234
@ Joachim Sauer: Đây là một truy vấn và kết quả của nó phụ thuộc vào cách nó được đánh giá. Trong khi đánh giá, nó lặp qua các phần tử danh sách áp dụng một số quy tắc. Đây không phải là tương tự thẳng cho chức năng subList của Java, và nó là sai lầm để so sánh chúng trong trường hợp này. – Kamarey