2012-04-18 35 views
28

Làm cách nào để kiểm tra xem String có trong số List không?Kiểm tra xem một Chuỗi có nằm trong một ArrayList của Strings

Tôi muốn chỉ định 1 đến temp nếu có kết quả, 2 nếu không.

mã hiện tại của tôi là:

Integer temp = 0; 
List<String> bankAccNos = new ArrayList<String>();//assume list contains values 
String bankAccNo = "abc"; 
for(String no : bankAccNos) 
    if(no.equals(bankAccNo)) 
     temp = 1; 
+0

Tại sao không chỉ cần thiết lập tạm thời là 2 vào lúc bắt đầu? Và tại sao sử dụng đối tượng Integer thay vì int? Giải pháp có vẻ đủ tốt nếu bạn thay đổi những gì tôi đã nói – tskulbru

+0

Những gì bạn đã viết đã là một giải pháp làm việc, ngoại trừ việc bạn đang thiếu câu lệnh khác. Cũng lưu ý rằng việc so sánh các chuỗi là trường hợp nhạy cảm có thể là một vấn đề nếu bạn không làm cho nó hoạt động đúng. Ngoài ra, bằng cách sử dụng chứa như đề xuất là một cách tiếp cận hợp lệ –

+0

@JimmyGustafsson: có người đàn ông tôi đã doin mà chỉ nhưng tôi đã nhầm lẫn ... anyway nhờ – abhi

Trả lời

44
temp = bankAccNos.contains(no) ? 1 : 2; 
+0

Phương thức 'List.contains()' kiểm tra danh tính, không bình đẳng. Nó hoạt động tốt cho số nguyên nhưng không phải chuỗi (đó là những gì OP yêu cầu). Lặp lại trong danh sách, hoặc tốt hơn, sử dụng luồng Danh sách Java8 là cách để tìm kiếm 'Danh sách ' – Michal

+4

@Malal các trạng thái tài liệu khác https://docs.oracle.com/javase/8/docs/api/java/util /List.html#contains-java.lang.Object- Nó kiểm tra tính bình đẳng, không nhận dạng: "trả về true nếu và chỉ khi danh sách này chứa ít nhất một phần tử e sao cho' (o == null? E == null: o.equals (e)) '" – jazzytomato

+0

Bạn nói đúng. Cảm ơn vì đã sửa tôi. – Michal

12

Giao diện List đã có này giải quyết.

int temp = 2; 
if(bankAccNos.contains(bakAccNo)) temp=1; 

Có thể tìm thấy thêm trong tài liệu về List.

+0

Phương pháp 'List.contains()' kiểm tra danh tính, không bình đẳng. Nó hoạt động tốt cho số nguyên nhưng không phải chuỗi (đó là những gì OP yêu cầu). Lặp lại trong danh sách, hoặc tốt hơn, sử dụng dòng Java8 List là cách để tìm 'List ' – Michal

+0

@Michal Không đúng như tài liệu nói khác (và tôi vừa thử nghiệm). Nhấn vào liên kết trong câu trả lời của tôi và đọc cho chính mình. –

0
List list1 = new ArrayList(); 
    list1.add("one"); 
    list1.add("three"); 
    list1.add("four"); 

    List list2 = new ArrayList(); 
    list2.add("one"); 
    list2.add("two"); 
    list2.add("three"); 
    list2.add("four"); 
    list2.add("five"); 


    list2.stream().filter(x -> !list1.contains(x)).forEach(x -> System.out.println(x)); 

Đầu ra là:

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