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的Spring框架中IOC容器容器的應(yīng)用
這篇文章主要介紹了Java的Spring框架中IOC容器容器的應(yīng)用,包括BeanFactory容器和ApplicationContext容器的介紹,需要的朋友可以參考下2015-12-12
五分鐘帶你學(xué)會(huì)用java解析json字符串
這篇文章主要給大家介紹了關(guān)于用java解析json字符串的相關(guān)資料,JSON是一種輕量級(jí)的、基于文本的、與語言無關(guān)的數(shù)據(jù)交換格式,易于人和機(jī)器讀寫,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
Java客戶端調(diào)用.NET的WebService實(shí)例
下面小編就為大家?guī)硪黄狫ava客戶端調(diào)用.NET的WebService實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
Spring Boot打開URL出現(xiàn)signin問題的解決
這篇文章主要介紹了Spring Boot打開URL出現(xiàn)signin問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
使用Mybatis對(duì)數(shù)據(jù)庫進(jìn)行單表操作的實(shí)現(xiàn)示例
這篇文章主要介紹了使用Mybatis對(duì)數(shù)據(jù)庫進(jìn)行單表操作的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
java實(shí)現(xiàn)通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07

