java判定數(shù)組或集合是否存在某個(gè)元素的實(shí)例
引言:
今天群里有朋友問(wèn)“怎么知道一個(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),略過(guò)。 // 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。能靠過(guò)來(lái)就果斷靠吧。
3)集合提供了類似“加減”的運(yùn)算,可以留意一下。
以上就是小編為大家?guī)?lái)的java判定數(shù)組或集合是否存在某個(gè)元素的實(shí)例全部?jī)?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ū)別簡(jiǎn)介及相互轉(zhuǎn)換實(shí)例
- java實(shí)現(xiàn)列表、集合與數(shù)組之間轉(zhuǎn)化的方法
- Java中集合和數(shù)組的排序方式小結(jié)
- 詳解JAVA高質(zhì)量代碼之?dāng)?shù)組與集合
- JAVA 區(qū)分集合和數(shù)組
相關(guān)文章
解決外部jar包@Service無(wú)法注解無(wú)法掃描的問(wèn)題
這篇文章主要介紹了解決外部jar包@Service無(wú)法注解無(wú)法掃描的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10淺析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í)的、基于文本的、與語(yǔ)言無(wú)關(guān)的數(shù)據(jù)交換格式,易于人和機(jī)器讀寫,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07Java客戶端調(diào)用.NET的WebService實(shí)例
下面小編就為大家?guī)?lái)一篇Java客戶端調(diào)用.NET的WebService實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09Spring Boot打開URL出現(xiàn)signin問(wèn)題的解決
這篇文章主要介紹了Spring Boot打開URL出現(xiàn)signin問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12使用Mybatis對(duì)數(shù)據(jù)庫(kù)進(jìn)行單表操作的實(shí)現(xiàn)示例
這篇文章主要介紹了使用Mybatis對(duì)數(shù)據(jù)庫(kù)進(jìn)行單表操作的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08java實(shí)現(xiàn)通訊錄管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07