博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之Collection类
阅读量:5019 次
发布时间:2019-06-12

本文共 8020 字,大约阅读时间需要 26 分钟。

1 @SuppressWarnings({ "unchecked", "rawtypes" })   //注解 2 public class Demo1_Collection { 3     /* 4      * 引用数据类型数组中存的都是对象的地址值,而非对象中的属性值 5      *A:集合和数组的区别: 6      * 区别1: 7      *  数组可以存储基本数据类型(值),也可以存储引用数据类型(地址值) 8      *  集合只能存储引用数据类型,但是也可以存储基本数据类型,只不过是存储是会自动装箱变成对象 9      * 区别2:10      *  数组的长度是固定的,不能自动增长11      *  集合的长度是可变的,可以根据元素的增加而增加12      * B:数组和集合何时使用对应的哪种:13      *   1.当元素个数固定的时候推荐使用数组;固定元素个数的时候用数组效率更高,因为它是上来就创建好了14      *   2.当元素个数变化时候推荐使用集合15      * C:Collection中的成员方法16      *      boolean add(Object c)           增加元素17      *   boolean remove(Object c)        移除元素18      *   void clear()                    清空集合19      *   boolean contains(Object o)      判断是否包含某个元素20      *   boolean isEmpty()               判断集合是否为空21      *   int size()                      获取元素的个数22      * D:注意23      *   add方法List集合一直都返回true,是因为List集合可以存储重复元素,但是如果是Set集合存储重复元素时是会返回false的24      *   ArrayList的父类的父类重写了toString方法,所以打印对象时输出的结果不是Object类中toString的结果25      *   26      */27     public static void main(String[] args) {28         29         //demo1();30         demo2();31 32     }33 34     public static void demo2() {35         Collection c = new ArrayList();36         c.add(new String("abc"));37         c.add("b");38         c.add("c");39         c.add("d");40         c.add(new Student("adda", 19));41         System.out.println(c);   //[a, b, c, d]42         c.remove("c");43         System.out.println(c);   //[a, b, d]44         System.out.println(c.contains("a"));   //true45         System.out.println(c.isEmpty());       //false46         System.out.println(c.size());          //347         c.clear();48         System.out.println(c);   //[]49     }50 51     public static void demo1() {52         Collection c = new ArrayList();53         boolean b = c.add("abc");54         c.add(true);             //这里会自动装箱将基本数据类型true转换成包装类型存入55         c.add(100);              //同上,会自动装箱56         System.out.println(b);57         System.out.println(c);58     }59 }
1 public class Demo2_Collection { 2  3     /* 4      * a. 集合的遍历,其实就是依次获取集合中的元素 5      * b. 把集合转换成数组,就可以实现集合的遍历   6      *    toArray() 7      * c.注意 8      *    自定义类中需要重写toString方法,否则打印出的对象c是打印的自定义类的地址 9      */10     public static void main(String[] args) {11         //demo1();12         Collection c = new ArrayList();13         c.add(new Student("lisi", 18));14         c.add(new Student("zhangsan", 16));15         System.out.println(c);16         Object[] arr = c.toArray();17         for (int i = 0; i < arr.length; i++) {18             System.out.println(arr[i]);19             Student s = (Student) arr[i];         //向下转型20             System.out.println(s.getName() + "...." + s.getAge());21         }22 23     }24 25     public static void demo1() {26         Collection c = new ArrayList();27         c.add("a");28         c.add("b");29         Object[] arr = c.toArray();       //将集合转换成数组30         for (int i = 0; i < arr.length; i++) {31             System.out.println(arr[i]);32         }33     }34 35 }
1 public class Demo3_CollectionAll {  2   3     /*  4      * all相关的方法  5      *         boolean addAll(Collection c)        6      *         boolean removeAll(Collection c)     实质删除的是两个集合的交集  7      *         boolean containsAll(Collection c)   判断c中的所有元素是否都在调用集合中存在  8      *         boolean retainAll(Collection c)     取交集  9      */ 10     public static void main(String[] args) { 11  12         //demo1(); 13         //demo2(); 14         //demo3(); 15         Collection c1 = new ArrayList(); 16         c1.add("a"); 17         c1.add("b"); 18         c1.add("c"); 19         c1.add("d"); 20          21         /*Collection c2 = new ArrayList(); 22         c2.add("a"); 23         c2.add("b"); 24         c2.add("z"); 25         boolean b = c1.retainAll(c2); 26         System.out.println(b);          //true   27         System.out.println(c1);         //[a, b] 28          29         Collection c3 = new ArrayList(); 30         c3.add("aa"); 31         c3.add("bb"); 32         boolean b2 = c1.retainAll(c3); 33         System.out.println(b2);           //true 34         System.out.println(c1);           //[] 35 */         36         //看调用集合是否改变(即交集是否和调用集合相同),不变则为false,改变则为true 37         Collection c4 = new ArrayList(); 38         c4.add("a"); 39         c4.add("b"); 40         c4.add("c"); 41         c4.add("d"); 42         boolean b3 = c1.retainAll(c4); 43         System.out.println(b3);           //false 44         System.out.println(c1);           //[a, b, c, d] 45          46         Collection c5 = new ArrayList(); 47         c5.add("a"); 48         c5.add("b"); 49         c5.add("c"); 50         c5.add("f"); 51         c5.add("e"); 52         boolean b4 = c1.retainAll(c5); 53         System.out.println(b4);           //true 54         System.out.println(c1);           //[a, b, c] 55          56          57     } 58  59     public static void demo3() { 60         Collection c1 = new ArrayList(); 61         c1.add("a"); 62         c1.add("b"); 63         c1.add("c"); 64         c1.add("d"); 65          66         Collection c2 = new ArrayList(); 67         c2.add("a"); 68         c2.add("b"); 69         c2.add("z"); 70         boolean b = c1.containsAll(c2); 71         System.out.println(b);           //false 72          73         Collection c3 = new ArrayList(); 74         c3.add("a"); 75         c3.add("b"); 76         boolean b2 = c1.containsAll(c3); 77         System.out.println(b2);           //true 78     } 79  80     public static void demo2() { 81         Collection c1 = new ArrayList(); 82         c1.add("a"); 83         c1.add("b"); 84         c1.add("c"); 85         c1.add("d"); 86          87         Collection c2 = new ArrayList(); 88         c2.add("a"); 89         c2.add("b"); 90         c2.add("z"); 91         boolean b = c1.removeAll(c2); 92         System.out.println(b); 93         System.out.println(c1);     //[c, d] 94     } 95  96     public static void demo1() { 97         Collection c1 = new ArrayList(); 98         c1.add("a"); 99         c1.add("b");100         c1.add("c");101         c1.add("d");102         103         Collection c2 = new ArrayList();104         c2.add("a");105         c2.add("b");106         107         c1.addAll(c2);               //会将c2当做一个对象添加到c1中108         System.out.println(c1);      //[a, b, c, d, a, b]109     }110 111 }

使用迭代器Iterator遍历集合:

1 public class Demo4_Iterator { 2  3     /* 4      * 迭代遍历集合 5      * 迭代器原理: 6      *     迭代器是对集合进行遍历,但是每个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样的, 7      *     那么就需要在每个类中定义hasNext()和next()方法,如果这样做会使集合体系过于臃肿,迭代器将这样的方法向上抽取出接口, 8      *     然后在每个类的内部定义自己迭代方式,这样做有两种好处:第一. 规定了整个集合体系的遍历方式都是hasNext()和next()方法, 9      *     第二. 代码由底层内部实现,使用者不用管是怎么实现的,只要会用即可10      *     11      * 迭代器源码分析:12      *     1. 在Eclipse中Ctrl + shift + t 找到ArrayList类13      *     2. Ctrl + o 找到 iterator()方法14      *     3. 查看返回值是 new itr() ,说明是Iterator类的子类对象15      *     4. Itr这个类重写了Iterator中的所有抽象方法16      */17     public static void main(String[] args) {18 19         //demo1();20         Collection c = new ArrayList();21         c.add(new Student("张三", 18));22         c.add(new Student("李四", 19));23         c.add(new Student("王五", 20));24         c.add(new Student("赵六", 21));25         26         Iterator it = c.iterator();27         while (it.hasNext()) {28             //System.out.println(it.next());29             Student s = (Student) it.next();        //向下转型30             System.out.println(s.getName() + " " + s.getAge());31         }32         33     }34 35     public static void demo1() {36         Collection c = new ArrayList();37         c.add("a");38         c.add("b");39         c.add("c");40         c.add("d");41 42         Iterator it = c.iterator(); // 获取迭代器43         /*44          * boolean b = it.hasNext(); //判断集合中是否有元素 System.out.println(b);45          * System.out.println(it.next()); //通过next()方法获取元素值46          */47         while (it.hasNext()) {48             System.out.println(it.next());49 50         }51     }52 53 }

 

转载于:https://www.cnblogs.com/jiangjunwei/p/9206920.html

你可能感兴趣的文章
python全局参数与局部参数
查看>>
laravel模型使用快速入门
查看>>
vsim仿真VHDL输出fsdb格式文件
查看>>
MVC原理
查看>>
Servlet笔记8--乱码解决方案
查看>>
各种编程语言鸡汤网站
查看>>
数据分析站点导航
查看>>
统计学中z分布、t分布、F分布及χ^2分布
查看>>
自定义组合控件
查看>>
Tomcat 详解
查看>>
MySQL 获取无限级某级的全路径
查看>>
深度学习方法(七):最新SqueezeNet 模型详解,CNN模型参数降低50倍,压缩461倍!...
查看>>
时间模块
查看>>
MYSQL UTF8 相关设置
查看>>
【Teradata】DSQL设置连接数据库字符集
查看>>
【特效】闪电
查看>>
编译VisualVM源码解决乱码问题
查看>>
跟我学ASP.NET MVC之十一:URL路由
查看>>
java与数据结构(8)---java实现链队列
查看>>
Python_41datetime模块
查看>>