引言:
今天群里有朋友问“怎么知道一个数组集合是否已经存在当前对象”,大家都知道循环比对,包括我这位大神群友。还有没其他办法呢?且看此篇。
正文:
能找到这里的都是程序员吧,直接上代码应该更清楚些。
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)binarySearch(,)。但条件是需要事先排序,开销需要考虑。
B)Regex。但需要将数组转为字符串,Arrays类提供的方法会引入“, [ ]”这三种分割符,可能影响判定结果。
C)循环比对。
2)集合至少两种:
A)循环。如果只是判定默认存在(非定制型存在),建议直接不考虑。
B)contains。能靠过来就果断靠吧。
3)集合提供了类似“加减”的运算,可以留意一下。
分享到:
相关推荐
下面小编就为大家带来一篇java判定数组或集合是否存在某个元素的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
主元素 线性选择算法主元素的判定(分治策略) 设T[0:n-1]是n个元素的数组,如果其中某个元素x在整个数组中的出现次数超过n/2,...请设计一个分治算法,判断数组T={1,2,2,2,3,4,3,2,2,4,2,2,6,7,2,2}中是否存在主元素。
js代码-判断对象数组是否含有某个对象
这是在算法分析与复杂性课程里面,利用概率算法判定两个集合是否会相等的代码
本文档介绍了魔方矩阵的基本概念及其实现思路,并用二维数组进行实现,含详细代码,附注释。
写一个通用方法,用于判定给定数组是否已排好序,其中给定升序、等序和降序数组的判定方法和源代码。
主要介绍了Lua判断一个目录或文件是否存在的方法,Lua中可以使用io.open判断文件或目录是否存在,本文总结了判断方法,并给出了一个自定义函数,需要的朋友可以参考下
数组中是否有重复值的判断方法有很多,本文为大家推荐下比较实用的3种方法,感兴趣的朋友可以参考下,希望对大家有所帮助
使用环境:需要先安装PyCharm(请自己百度下载安装),以及然后官网上下载Python 2.7版本,以及Python 3.7版本后,安装在自己的电脑上。...目的:帮助理解集合对象在Python中的具体创建和基本的集合运算。
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java判定文件编码或文本流编码的方法[文].pdf
labview统计数组中奇数偶数个数,利用移位寄存器,用labview编写的奇偶计数程序,把第i次循环执行的结果作为第i+1次循环的输入,LabVIEW循环结构中的移位寄存器可以实现这种功能。
经常在网上搜东西都搜不到,更有人上传点没用了,现在我解决了就把解决方法上传上吧.
python字典与集合
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
判定有向图是否存在回路 输入约定 第一行为图中顶点的个数n; 第二行为途中弧度条数e; 第二行为顶点信息;接着e行为e条弧依附的两个顶点。