赞
踩
对Collection接口常用方法的训练
- public class Main {
- public static void main(String[] args) {
- //Collection接口详解
- //常用的方法
- /*boolean add(E e)
- * 确保此集合包含指定的元素(可选操作)
- * */
- /*
- * int size()
- * 返回此集合中的元素数
- * */
- /*
- * void clear()
- * 从此集合中删除所有元素,(可选操作)
- *
- * Object[] toArray()
- * 返回一个包含此集合中所有元素的数组
- *
- * boolean isEmpty()
- * 如果此集合不包含元素,则返回true
- *
- * Itertor iterator()
- * 返回此集合中的元素的迭代器
- * 通过迭代器中方法完成集合的迭代(遍历)
- * */
-
- class Customer{
- String name;
- int age;
- //构造方法,初始化变量
- Customer(String name,int age){
- this.name = name;
- this.age = age;
- }
- //toString返回字符串
- public String toString(){
- return "Customer[name = "+name+"age="+age+"]";
- }
- }
-
- //1.创建集合
- Collection c = new ArrayList();
- //2.添加元素
- c.add(1);
- c.add(new Integer(100));
- Object o = new Object();
- c.add(o);//Collection集合只能单个存储元素
- Customer cust = new Customer("张三",20);
- c.add(cust);
-
- //3.将集合转换成Object类型数组
- Object[] objs = c.toArray();
- //遍历数组
- for(int i=0;i< objs.length;i++){
- System.out.println(objs[i]);
- }
- //4.获取元素的个数
- System.out.println(c.size());//4
- System.out.println(c.isEmpty());//FALSE
-
- //5.清空元素
- c.clear();
- System.out.println(c.size());//0
- System.out.println(c.isEmpty());//TRUE
- }
- }

迭代器的使用
- public class Main {
- public static void main(String[] args) {
- //创建对象
- Collection<Comparable> c = new LinkedList<Comparable>();
- //添加元素
- c.add(10);
- c.add(3.14);
- c.add(true);
- //迭代元素
- //1.获取迭代对象
- Iterator<Comparable> it = c.iterator();
- System.out.println(it);
- /*
- * java.util.AbstractList$Itr是ArrayList集合所依赖的迭代器
- * java.util.LinkedList$ListItr是ListedList集合所依赖的迭代器
- * Itr、ListItr是内部类
- * 迭代器是面向接口编程,it是引用,保存了内存地址,指向堆中的”迭代器对象“
- * */
-
- //2.遍历集合调用Collection内部方法
- while(it.hasNext()){
- Object element = it.next();
- System.out.println(element);
- }
- /*
- * boolean b = it.hasNext();判断是否有更多的元素
- * Object element = it.next();将迭代器下移一位,并且取出指向的元素
- * 原则:it.next()之前必须先调用it.hasNext()方法,防止出现空指针异常
- * */
-
- /*
- * for(Iterator<Comparable> it1 = c.iterator();it.hasNext();){
- * Object element1 = it.next();
- * System.out.println(element1);
- * }
- * */
- }
- }

contains和remove的用法,但是有一个和题目不一样,remove(i2)返回的是false
- package web;
-
- import java.util.*;
-
- public class Main {
- public static void main(String[] args) {
- /*boolean contains(Object o)
- 如果此集合包含指定的元素,则返回 true 。
- boolean remove(Object o)
- 从该集合中删除指定元素的单个实例(如果存在)(可选操作)。
- 存储在集合中的元素应该去重写equals方法*/
- //创建集合
- Collection c = new ArrayList();
-
- //创建Integer类型的对象
- Integer i1 = new Integer(10);
-
- //添加对象到集合中
- c.add(i1);
-
- //判断集合中是否包含对象i1
- System.out.println(c.contains(i1));//true
-
- //再创建一个Integer对象
- Integer i2 = new Integer(10);
-
- //删除
- c.remove(i2);
- System.out.println(c.size());//0
-
- //判断集合中是否包含对象i2
- System.out.println(c.contains(i2));//true
- //实际上这里返回的是false
- //这就涉及到之前学的整型常量池,所以i1就是i2
- //并且contains方法底层调用的是equals方法
-
- //创建Manager对象
- Manager m1 = new Manager(10,"张三");
- // m1.setAge(18);
- // m1.setName("张三");
- //添加对象
- c.add(m1);
-
- //判断集合中是否存在对象m1
- System.out.println(c.contains(m1));//true
-
- //再添加一个manager对象
- Manager m2 = new Manager(10,"张三");
- // m2.setAge(18);
- // m2.setName("张三");
-
- //判断集合中是否存在对象m2
- System.out.println(c.contains(m2));//true
-
- //删除
- c.remove(m2);
- System.out.println(c.size());//0
-
- //重写equals方法之前
- //System.out.println(c.contains(m2));false
-
- //重写equals方法之后
- //System.out.println(c.contains(m2));false
- }
- }
- class Manager{
- int age;
- String name;
- Manager(int age,String name){
- this.age = age;
- this.name = name;
- }
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- //重写equals方法
- public boolean equals(Object o){
- if(this == o) return true;
- if (o instanceof Manager){
- Manager m = (Manager) o;
- if (m.age == this.age && m.name.equals(this.name)){
- return true;
- }
- }
- return false;
- }
- }

1.迭代器的remove方法
2.集合本身的remove方法
注意:使用集合本身的remove方法运行会报错,代码没有错,查了资料是什么空指针问题,看不懂
- package web;
-
- import java.util.*;
-
- public class Main {
- public static void main(String[] args) {
- //创建一个集合
- Collection c = new ArrayList();
-
- //添加元素
- c.add(1);
- c.add(2);
- c.add(3);
-
- //获取迭代器遍历
- Iterator it = c.iterator();
- while (it.hasNext()) {
- //推荐使用迭代器自身的remove方法
- it.next();
- //删除
- it.remove();
- /*
- * 使用集合本身的remove方法删除
- *
- * Object element = it.next();
- *
- * //删除
- * c.remove(element);
- *
- * 这样方式需要在每一次删除后重新获取新的迭代器
- *
- * */
- }
- System.out.println(c.size());//0
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。