Heim  >  Artikel  >  Java  >  Java bestimmt, ob eine Instanz eines Elements in einem Array oder einer Sammlung vorhanden ist

Java bestimmt, ob eine Instanz eines Elements in einem Array oder einer Sammlung vorhanden ist

高洛峰
高洛峰Original
2017-01-23 16:47:291567Durchsuche

Einführung:

Heute fragte ein Freund in der Gruppe: „Woher weiß man, ob eine Array-Sammlung bereits das aktuelle Objekt enthält?“ Jeder kennt sich mit Schleifenvergleichen aus, auch ich, ein großartiges Gruppenmitglied. Gibt es eine andere Möglichkeit? Werfen wir einen Blick auf diesen Artikel.

Text:

Die Leute, die Sie hier finden, sind alle Programmierer. Es sollte klarer sein, den Code direkt einzugeben.

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); 
  
  } 
  
}

Laufergebnisse:

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]

Fassen wir zusammen~. =

1) Es gibt mindestens drei Arten von Arrays:

A) BinarySearch(,). Voraussetzung ist jedoch, dass es im Voraus sortiert und der Overhead berücksichtigt werden muss.
B) Regex. Das Array muss jedoch in eine Zeichenfolge konvertiert werden. Die von der Arrays-Klasse bereitgestellte Methode führt die drei Trennzeichen „, []“ ein, was sich auf das Bestimmungsergebnis auswirken kann.
C) Schleifenvergleich.

2) Es gibt mindestens zwei Arten von Sammlungen:

A) Schleife. Wenn nur festgestellt wird, dass es standardmäßig vorhanden ist (nicht angepasste Existenz), wird empfohlen, es nicht direkt zu berücksichtigen.
B) enthält. Wenn Sie näher kommen können, tun Sie es entschlossen.

3) Mengen bieten ähnliche Operationen wie „Addition und Subtraktion“, also achten Sie bitte darauf.

Das Obige ist der gesamte Inhalt der vom Editor bereitgestellten Java-Beispiele, um festzustellen, ob ein Element in einem Array oder einer Sammlung vorhanden ist. Ich hoffe, Sie unterstützen die chinesische PHP-Website~

Mehr Java Bestimmungsarrays Oder ob es eine Instanz eines bestimmten Elements in der Sammlung gibt. Weitere Informationen zu verwandten Artikeln finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn