소개:
오늘 그룹의 한 친구가 "배열 컬렉션에 현재 객체가 이미 포함되어 있는지 어떻게 알 수 있나요?"라고 물었습니다. 훌륭한 그룹 멤버인 저를 포함해 모두가 루프 비교에 대해 알고 있습니다. 다른 방법이 있나요? 이 기사를 살펴 보겠습니다.
텍스트:
여기서 볼 수 있는 사람들은 모두 프로그래머입니다. 코드를 직접 입력하는 것이 더 명확할 것입니다.
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 중국어 웹사이트에 주목하세요!