java判定数组或集合是否存在某个元素
2012-12-12 20:38
357 查看
怎么知道一个数组集合是否已经存在当前对象
除了循环比对还有其他方法
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)); true
// 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()); true
// 1-3, 都会写循环,略过。
// TODO: 循环数据依次比对,此处略去5行代码。
// 2, 集合是否存在子元素
// 2-1, 最常用的contains
System.out.println("2-1_contains:" + TEMPLATE_COLL.contains(TEST_STR)); true
// 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); [bbb, ccc]
collNotExists.removeAll(collExists);
System.out.println("2-1-1_removeAll[notexist]:" + collNotExists); [aaa]
}
}
运行结果:
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)集合提供了类似“加减”的运算,可以留意一下。
除了循环比对还有其他方法
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)); true
// 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()); true
// 1-3, 都会写循环,略过。
// TODO: 循环数据依次比对,此处略去5行代码。
// 2, 集合是否存在子元素
// 2-1, 最常用的contains
System.out.println("2-1_contains:" + TEMPLATE_COLL.contains(TEST_STR)); true
// 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); [bbb, ccc]
collNotExists.removeAll(collExists);
System.out.println("2-1-1_removeAll[notexist]:" + collNotExists); [aaa]
}
}
运行结果:
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判定数组或集合是否存在某个元素
- java判定数组或集合是否存在某个元素
- 给定一个集合和一个正整数c,判定是否存在该集合的子集,使其所有元素的和等于给定的正整数c?
- Java总哈希表的运用,判断一个数组中是否存在相同的元素之间的距离在k以内!
- Java判断一个值,或者对象是否存在list集合中和去掉list集合中重复的元素
- Java中高效的判断数组中某个元素是否存在详解
- 如何判定数组是否存在重复元素
- java 函数式编程 - 判断集合中是否存在满足某个条件的元素
- java笔记:Java字符串数组中判断是否存在某元素的方法
- 假设数组a有n个元素,元素取值范围是1~n,如何判定数组是否存在重复元素
- leetcode-java.T015_3Sum---给定一个n个元素的数组,是否存在a,b,c三个元素,使用得a+b+c=0,找出所有符合这个条件的三元组
- 判定数组中是否存在重复元素
- 在Java中如何高效判断数组中是否包含某个元素
- php 查找数组中是否存在某个元素或者key
- [华为面试题_ND2]运行错误请检查是否存在数组越界非法访问_野指针乱访问_空指针乱访问等情况_java_scanner_error
- c++面试题:判断数组是否存在重复元素
- N个元素的有序数组A,判断是否有 A[i]=i 存在
- 【Array、List】Java数组或集合中如何删除元素