Đầu tiên, mảng đối tượng trong Java là rất thấp so với List
s, vì vậy bạn thực sự nên sử dụng chúng thay vào đó nếu có thể. Bạn có thể tạo chế độ xem của một String[]
dưới dạng List<String>
bằng cách sử dụng Arrays.asList
.
Thứ hai, Java chưa có biểu thức lambda hoặc tham chiếu phương thức, vì vậy không có cách nào để thực hiện điều này ... và tham chiếu phương thức theo tên của nó là String
dễ bị lỗi và không phải là ý hay.
Điều đó nói rằng, Guava cung cấp một số yếu tố chức năng cơ bản mà sẽ cho phép bạn làm những gì bạn muốn:
public static final Function<String, String> TO_LOWER =
new Function<String, String>() {
public String apply(String input) {
return input.toLowerCase();
}
};
// returns a view of the input list with each string in all lower case
public static List<String> toLower(List<String> strings) {
// transform in Guava is the functional "map" operation
return Lists.transform(strings, TO_LOWER);
}
Không giống như tạo ra một mảng mới hoặc List
và sao chép các phiên bản chữ thường của mỗi String
vào nó, điều này không lặp lại các phần tử của bản gốc List
khi được tạo và yêu cầu rất ít bộ nhớ.
Với Java 8, biểu thức lambda và tham khảo phương pháp nên cuối cùng được thêm vào Java cùng với phương pháp khuyến nông cho các chức năng bậc cao như map
, làm cho này xa dễ dàng hơn (một cái gì đó như thế này):
List<String> lowerCaseStrings = strings.map(String#toLowerCase);
Dòng đó làm gì? Nó không phải là chính xác. – skaffman
@skaffman - hàm strtolower() của PHP trả về một chuỗi ký tự thấp hơn, tương tự như .toLowerCase() của Java. Hàm trên áp dụng (ánh xạ) hàm strtolower() cho mỗi phần tử trong mảng $, do đó trả về một mảng với tất cả các phần tử thấp hơn. – mellowsoon