>  기사  >  Java  >  Java는 요소의 인스턴스가 배열 또는 컬렉션에 존재하는지 확인합니다.

Java는 요소의 인스턴스가 배열 또는 컬렉션에 존재하는지 확인합니다.

高洛峰
高洛峰원래의
2017-01-23 16:47:291570검색

소개:

오늘 그룹의 한 친구가 "배열 컬렉션에 현재 객체가 이미 포함되어 있는지 어떻게 알 수 있나요?"라고 물었습니다. 훌륭한 그룹 멤버인 저를 포함해 모두가 루프 비교에 대해 알고 있습니다. 다른 방법이 있나요? 이 기사를 살펴 보겠습니다.

텍스트:

여기서 볼 수 있는 사람들은 모두 프로그래머입니다. 코드를 직접 입력하는 것이 더 명확할 것입니다.

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Collection; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
  
public class Test implements Serializable { 
  
  private static final long serialVersionUID = 2640934692335200272L; 
  
  public static void main(String[] args) { 
  
    // data segment 
    String[] SAMPLE_ARRAY = new String[] { "aaa", "solo", "king" }; 
    String TEST_STR = "king"; 
    Collection TEMPLATE_COLL = new ArrayList(); 
    TEMPLATE_COLL.add("aaa"); 
    TEMPLATE_COLL.add("solo"); 
    TEMPLATE_COLL.add("king"); 
    // <- data segment 
  
    // 1, 字符串数组是否存在子元素 
    // 1-1, 直接使用API 
    Arrays.sort(SAMPLE_ARRAY); 
    int index = Arrays.binarySearch(SAMPLE_ARRAY, TEST_STR); 
    System.out.println("1-1_sort-binarySearche:"
        + ((index != -1) ? true : false)); 
  
    // 1-2, 使用正则(因Arrays.toString()引入了“, [ ]”故只在有限环境下可靠) 
    String tmp = Arrays.toString(SAMPLE_ARRAY); 
    Pattern p = Pattern.compile("king"); 
    Matcher m = p.matcher(tmp); 
    System.out.println("1-2_toString-Regex:" + m.find()); 
  
    // 1-3, 都会写循环,略过。 
    // TODO: 循环数据依次比对,此处略去5行代码。 
  
    // 2, 集合是否存在子元素 
    // 2-1, 最常用的contains 
    System.out.println("2-1_contains:" + TEMPLATE_COLL.contains(TEST_STR)); 
  
    // 2-1-1, 扩展: 
    // 按模板集合,将当前集合分为“模板已存在”与“不存在”两个子集。 
    Collection coll = new ArrayList<String>(); 
    coll.add("aaa"); 
    coll.add("bbb"); 
    coll.add("ccc"); 
    // 完整复制集合 
    Collection collExists = new ArrayList(coll); 
    Collection collNotExists = new ArrayList(coll); 
  
    collExists.removeAll(TEMPLATE_COLL); 
    System.out.println("2-1-1_removeAll[exist]:" + collExists); 
    collNotExists.removeAll(collExists); 
    System.out.println("2-1-1_removeAll[notexist]:" + collNotExists); 
  
  } 
  
}

실행 결과:

1-1_sort-binarySearche:true
1-2_toString-Regex:true
2-1_contains:true
2-1-1_removeAll[exist]:[bbb, ccc]
2-1-1_removeAll[notexist]:[aaa]

정리해 보겠습니다~. =

1) 세 가지 이상의 배열 유형:

A) 바이너리 검색(,). 다만, 사전에 정리가 필요하고, 오버헤드도 고려해야 한다는 것이 조건이다.
B) 정규식. 그러나 배열을 문자열로 변환해야 합니다. Arrays 클래스에서 제공하는 메서드에는 결정 결과에 영향을 미칠 수 있는 세 개의 구분 기호 ", [ ]"가 도입됩니다.
C) 루프 비교.

2) 최소한 두 가지 유형의 컬렉션이 있습니다.

A) 루프. 기본적으로만 존재한다고 판단되는 경우(커스텀되지 않은 존재), 직접적으로 고려하지 않는 것이 좋습니다.
B)가 포함되어 있습니다. 가까워질 수 있다면 과감하게 하세요.

3) 세트는 "덧셈과 뺄셈"과 유사한 연산을 제공하므로 주의 깊게 살펴보세요.

위 내용은 편집자가 가져온 배열이나 컬렉션에 요소가 존재하는지 확인하는 Java 예제의 전체 내용입니다. PHP 중국어 사이트에 많은 지원 바랍니다~

자바 더보기 결정 배열 또는 컬렉션에 특정 요소의 인스턴스가 있는지 여부 관련 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.