java判定數(shù)組或集合是否存在某個(gè)元素的實(shí)例
引言:
今天群里有朋友問“怎么知道一個(gè)數(shù)組集合是否已經(jīng)存在當(dāng)前對(duì)象”,大家都知道循環(huán)比對(duì),包括我這位大神群友。還有沒其他辦法呢?且看此篇。
正文:
能找到這里的都是程序員吧,直接上代碼應(yīng)該更清楚些。
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, 字符串?dāng)?shù)組是否存在子元素
// 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()引入了“, [ ]”故只在有限環(huán)境下可靠)
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, 都會(huì)寫循環(huán),略過。
// TODO: 循環(huán)數(shù)據(jù)依次比對(duì),此處略去5行代碼。
// 2, 集合是否存在子元素
// 2-1, 最常用的contains
System.out.println("2-1_contains:" + TEMPLATE_COLL.contains(TEST_STR));
// 2-1-1, 擴(kuò)展:
// 按模板集合,將當(dāng)前集合分為“模板已存在”與“不存在”兩個(gè)子集。
Collection coll = new ArrayList<String>();
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
// 完整復(fù)制集合
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);
}
}
運(yùn)行結(jié)果:
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]
小結(jié)一下吧~。=
1)數(shù)組至少三種:
A)binarySearch(,)。但條件是需要事先排序,開銷需要考慮。
B)Regex。但需要將數(shù)組轉(zhuǎn)為字符串,Arrays類提供的方法會(huì)引入“, [ ]”這三種分割符,可能影響判定結(jié)果。
C)循環(huán)比對(duì)。
2)集合至少兩種:
A)循環(huán)。如果只是判定默認(rèn)存在(非定制型存在),建議直接不考慮。
B)contains。能靠過來就果斷靠吧。
3)集合提供了類似“加減”的運(yùn)算,可以留意一下。
以上就是小編為大家?guī)淼膉ava判定數(shù)組或集合是否存在某個(gè)元素的實(shí)例全部內(nèi)容了,希望大家多多支持腳本之家~
- Java數(shù)組集合的深度復(fù)制代碼實(shí)例
- Java中數(shù)組與集合的相互轉(zhuǎn)換實(shí)現(xiàn)解析
- java集合與數(shù)組的相同點(diǎn)和不同點(diǎn)
- Java二維數(shù)組計(jì)算集合總結(jié)
- Java集合與數(shù)組區(qū)別簡介及相互轉(zhuǎn)換實(shí)例
- java實(shí)現(xiàn)列表、集合與數(shù)組之間轉(zhuǎn)化的方法
- Java中集合和數(shù)組的排序方式小結(jié)
- 詳解JAVA高質(zhì)量代碼之?dāng)?shù)組與集合
- JAVA 區(qū)分集合和數(shù)組
相關(guān)文章
一篇文章帶你了解JAVA面對(duì)對(duì)象三大特征之封裝
所有的面向?qū)ο缶幊陶Z言的思路都是差不多的,而這三大特性,則是思路中的支柱點(diǎn),接下來我就重點(diǎn)講解了一下java三大特性-封裝,感興趣的朋友跟隨腳本之家小編一起看看吧2021-08-08
Java中通過反射實(shí)現(xiàn)代理Proxy代碼實(shí)例
這篇文章主要介紹了Java中通過反射實(shí)現(xiàn)代理Proxy代碼實(shí)例,java實(shí)現(xiàn)代理可以通過java.lang.reflect.Proxy接口結(jié)合java.lang.reflect.InvocationHandler來實(shí)現(xiàn),需要的朋友可以參考下2023-08-08
java中的數(shù)學(xué)計(jì)算函數(shù)的總結(jié)
這篇文章主要介紹了java中的數(shù)學(xué)計(jì)算函數(shù)的總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-07-07
示例解析java重載Overloading與覆蓋Overriding
這篇文章主要介紹了java重載Overloading與覆蓋Overriding的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
IDEA中實(shí)現(xiàn)springboot熱部署方式
在IDEA中實(shí)現(xiàn)SpringBoot的熱部署可以通過修改設(shè)置來完成,首先在設(shè)置中搜索Compiler,并勾選Build project automatically,然后進(jìn)入Advanced Settings,勾選Allow auto-make to start even if developed application is currently running2024-09-09
Spring Boot如何移除內(nèi)嵌Tomcat,使用非web方式啟動(dòng)
這篇文章主要介紹了Spring Boot如何移除內(nèi)嵌Tomcat,使用非web方式啟動(dòng),幫助大家更好的理解和學(xué)習(xí)使用spring boot框架,感興趣的朋友可以了解下2021-02-02
Java8中l(wèi)ambda表達(dá)式的應(yīng)用及一些泛型相關(guān)知識(shí)
這篇文章主要介紹了Java8中l(wèi)ambda表達(dá)式的應(yīng)用及一些泛型相關(guān)知識(shí)的相關(guān)資料2017-01-01

