2010-01-25 37 views
25

Tôi đã và đang làm việc trên và tắt với Java/Python. Bây giờ trong tình huống này, tôi muốn kiểm tra xem phần tử có trong danh sách và làm công cụ ...Một lớp lót để kiểm tra xem phần tử có nằm trong danh sách

Python nói:

if "a" in ["a", "b", "c"]: 
    print "It's there!" 

Liệu java cung cấp bất kỳ một lót cho điều này thay vì tạo ArrayList/Set hoặc cấu trúc dữ liệu tương tự trong các bước và thêm các yếu tố vào nó?

Cảm ơn

Trả lời

56

Sử dụng Arrays.asList:

if(Arrays.asList("a","b","c").contains("a")) 
+2

Điều này không tạo danh sách? – danben

+2

Danh sách chỉ là một trình bao bọc xung quanh mảng, vì vậy nó rất nhẹ. Tất nhiên, "chứa" chỉ là sẽ kết thúc lặp qua mảng, vì vậy điểm là gì? –

+0

@danben chắc chắn, nhưng đó là một lớp lót thích hợp. –

7

Có một boolean chứa phương pháp (Object obj) trong giao diện danh sách.

Bạn sẽ có thể nói:

if (list.contains("a")) { 
    System.out.println("It's there"); 
} 

Theo javadoc:

 
boolean contains(Object o)

Returns true if this list contains the specified element. More formally, returns true if and only if this list contains at least one element e such that (o==null ? e==null : o.equals(e)).

1

Bạn có thể sử dụng java.util.Arrays.binarySearch để tìm một phần tử trong một mảng hoặc để kiểm tra sự tồn tại của nó:

import java.util.Arrays; 
... 

char[] array = new char[] {'a', 'x', 'm'}; 
Arrays.sort(array); 
if (Arrays.binarySearch(array, 'm') >= 0) { 
    System.out.println("Yes, m is there"); 
} 

Lưu ý rằng để binarySearch hoạt động chính xác, mảng cần được sắp xếp. Do đó gọi tới Arrays.sort() trong ví dụ. Nếu dữ liệu của bạn đã được sắp xếp, bạn không cần phải làm điều đó. Vì vậy, đây không phải là nghiêm ngặt một lót nếu bạn cần phải sắp xếp mảng của bạn đầu tiên. Thật không may, Arrays.sort() không trả về một tham chiếu đến mảng - do đó không thể kết hợp sắp xếp và tìm kiếm nhị phân (ví dụ: Arrays.binarySearch (Arrays.sort (myArray), khóa)) không hoạt động).

Nếu bạn có thể đủ khả năng phân bổ thêm, sử dụng Arrays.asList() có vẻ sạch hơn.

0

Nếu anh ấy thực sự muốn một lót mà không cần bất kỳ bộ sưu tập, OK, anh có thể có một:

for(String s:new String[]{"a", "b", "c")) if (s.equals("a")) System.out.println("It's there"); 

* nụ cười *

(Không phải là nó xấu xí Xin vui lòng, không sử dụng nó trong mã thực)

2

Bạn có thể thử sử dụng chuỗi có dấu phân cách không xuất hiện trong bất kỳ phần tử nào.

if ("|a|b|c|".contains("|a|")) 
7

Trong JDK7:

if ({"a", "b", "c"}.contains("a")) { 

Giả sử dự án sưu tập literals Dự án Coin đi qua.

+0

Đó là về thời gian. Hy vọng rằng điều này được thông qua. Tôi cảm thấy mệt mỏi vì sự rầm rộ của Java – I82Much

+1

Có thêm 13 nhân vật có thể sẽ không giết bạn. –

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