关于数组或集合中判断存在某个元素

简介:
复制代码
 1 import java.io.Serializable;
 2 import java.util.ArrayList;
 3 import java.util.Arrays;
 4 import java.util.Collection;
 5 import java.util.regex.Matcher;
 6 import java.util.regex.Pattern;
 7 
 8 public class Test implements Serializable {
 9 
10     private static final long serialVersionUID = 2640934692335200272L;
11 
12     public static void main(String[] args) {
13 
14         // data segment
15         String[] SAMPLE_ARRAY = new String[] { "aaa", "solo", "king" };
16         String TEST_STR = "king";
17         Collection TEMPLATE_COLL = new ArrayList();
18         TEMPLATE_COLL.add("aaa");
19         TEMPLATE_COLL.add("solo");
20         TEMPLATE_COLL.add("king");
21         // <- data segment
22 
23         // 1, 字符串数组是否存在子元素
24         // 1-1, 直接使用API
25         Arrays.sort(SAMPLE_ARRAY);
26         int index = Arrays.binarySearch(SAMPLE_ARRAY, TEST_STR);
27         System.out.println("1-1_sort-binarySearche:"
28                 + ((index != -1) ? true : false));
29 
30         // 1-2, 使用正则(因Arrays.toString()引入了“, [ ]”故只在有限环境下可靠)
31         String tmp = Arrays.toString(SAMPLE_ARRAY);
32         Pattern p = Pattern.compile("king");
33         Matcher m = p.matcher(tmp);
34         System.out.println("1-2_toString-Regex:" + m.find());
35 
36         // 1-3, 都会写循环,略过。
37         // TODO: 循环数据依次比对,此处略去5行代码。
38 
39         // 2, 集合是否存在子元素
40         // 2-1, 最常用的contains
41         System.out.println("2-1_contains:" + TEMPLATE_COLL.contains(TEST_STR));
42 
43         // 2-1-1, 扩展:
44         // 按模板集合,将当前集合分为“模板已存在”与“不存在”两个子集。
45         Collection coll = new ArrayList<String>();
46         coll.add("aaa");
47         coll.add("bbb");
48         coll.add("ccc");
49         // 完整复制集合
50         Collection collExists = new ArrayList(coll);
51         Collection collNotExists = new ArrayList(coll);
52 
53         collExists.removeAll(TEMPLATE_COLL);
54         System.out.println("2-1-1_removeAll[exist]:" + collExists);
55         collNotExists.removeAll(collExists);
56         System.out.println("2-1-1_removeAll[notexist]:" + collNotExists);
57 
58     }
59 }
复制代码

 

结果输出:

复制代码
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)集合提供了类似“加减”的运算,可以留意一下。 

 

本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4724936.html,如需转载请自行联系原作者

相关文章
|
6月前
|
前端开发 Java
java前端:删除数组中指定元素的方法
java前端:删除数组中指定元素的方法
107 1
|
7天前
查找数组中最大的元素值
【10月更文挑战第29天】查找数组中最大的元素值。
16 4
|
18小时前
集合和数组比较
数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下: 数组能存放基本数据类型和对象,而集合类存放的都是对象,集合类不能存放基本数据类型。数组和集合存放的对象皆为对象的引用地址。 数组容易固定无法动态改变,集合类容量动态改变。 数组无法判断其中实际存有多少元素,length只告诉了数组的容量,而集合的size()可以确切知道元素的个数 集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式 集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,
|
5月前
|
索引
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)
1211:判断元素是否存在
1211:判断元素是否存在
120 0
|
6月前
如何删除数组中的某个元素?
如何删除数组中的某个元素?
74 0
|
6月前
判断两个不重复的list集合是否相等 只比较元素值 不比较顺序
判断两个不重复的list集合是否相等 只比较元素值 不比较顺序
62 0
曲线救国 —— 删除数组的指定元素
曲线救国 —— 删除数组的指定元素
37 0
|
存储
返回集合中最大,最小的元素,再将元素进行排序
返回集合中最大,最小的元素,再将元素进行排序
58 0
如何向数组里添加元素
如何向数组里添加元素
120 0
下一篇
无影云桌面