java集合框架Collection(一)

java集合框架

java.util.Collection接口

Collection接口中定义了所有集合都要具备的功能,它也是所有集合的*接口。

Collection下面有几种不同集合的分类,常见的两个:

1.java.util.List:List接口表示的是线性表,是有序的且可以存放重复元素的集合 *

2.java.util.Set:Set接口表示的是不可重复的集合

这里指的重复是元素是否可以重复,而判断重复的标准是根据元素自身equals比较。

public static void main(String[] args) {
  Collection c = new ArrayList();
  /*
   * boolean add(E e)
   * 向当前集合中添加给定元素,成功添加后返回true
   */
  c.add("one");
  c.add("two");
  c.add("three");
  c.add("four");
  c.add("five");
  System.out.println(c);
  /*
   * int size()
   * 返回当前集合的元素个数
   */
  int size = c.size();
  System.out.println("size:"+size);
 
  /*
   * boolean isEmpty()
   * 判断当前集合是否为空集
   */
  boolean isEmpty = c.isEmpty();
  System.out.println("isEmpty:"+isEmpty);
 
  /*
   * void clear()
   * 清空集合
   */
  c.clear();
  System.out.println(c);
  System.out.println("size:"+c.size());
  System.out.println("isEmpty:"+c.isEmpty());
    }


boolean contains(E e)


判断当前集合是否包含给定元素,是否包含的依据是是否

与集合现有元素存在equals比较 为true的情况。

public static void main(String[] args) {
  Collection c = new ArrayList();
  c.add(new Point(1,2));
  c.add(new Point(3,4));
  c.add(new Point(5,6));
  c.add(new Point(7,8));
  System.out.println(c);
 
  Point p = new Point(1,2);
  boolean contains = c.contains(p);
  System.out.println("包含:"+contains);
 
  /*
   * 删除元素也是依靠元素equals比较进行删除的,如果集合有重复元素则
   * 只删除一次。
   */
  c.remove(p);
  System.out.println(c);
    }


集合只能放引用类型元素,并且存放的也是元素的引用(地址)


public static void main(String[] args) {
  Collection c = new ArrayList();
  Point p = new Point(1,2);
  c.add(p);
 
  System.out.println("p:"+p);
  System.out.println("c:"+c);
 
  p.setX(2);
  System.out.println("p:"+p);
  System.out.println("c:"+c);
    }

运行结果为

java集合框架Collection(一)


public static void main(String[] args) {
        Collection<String> c1 = new ArrayList<>();
//      Collection c1 = new HashSet();//HashSet是由HashMap实现的
        c1.add("java");
        c1.add("c++");
        c1.add(".net");
        System.out.println("c1:"+c1);
        
        Collection<String> c2 = new ArrayList<>();
        c2.add("ios");
        c2.add("android");
        c2.add("java");
        System.out.println("c2:"+c2);
        /*
         * addAll方法是取并集操作,会将给定集合中的所有元素添加到当前集合中。
         * 如果当前集合是Set集合,重复元素不能被再次添加进集合。
         */
        c1.addAll(c2);
        System.out.println("c1:"+c1);
        
        Collection<String> c3 = new ArrayList<>();
        c3.add("c++");
        c3.add("android");
        c3.add("php");
        System.out.println("c3:"+c3);
        /*
         * containsAll用于判断当前集合是否包含给定集合中的所有元素
         */
        boolean contains = c1.containsAll(c3);
        System.out.println("全包含:"+contains);
        /*
         * removeAll用于删除当前集合中与给定集合的共有元素。给定集合中的元素
         * 不受影响。
         */
        c1.removeAll(c3);
        System.out.println("c1:"+c1);
        System.out.println("c3:"+c3);
    }



遍历集合


Iterator iterator


该方法可以获取一个用于遍历当前集合元素的迭代器


java.util.Iterator接口,迭代器接口

迭代器接口规定了使用迭代器方式办理集合的相关操作,不同的集合都提供了对应的 实现类,我们无需记住这些具体实现类的名字,只要当作是Iterator看即可(多态),然后根据定义的相关操作遍历即可。


迭代器遍历集合遵循的原则是:问,取,删

其中删除元素不是必要操作。

public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("one");
        c.add("#");
        c.add("two");
        c.add("#");
        c.add("three");
        c.add("#");
        c.add("four");
        c.add("#");
        c.add("five");
        System.out.println(c);
        
        @SuppressWarnings("rawtypes")
        Iterator it = c.iterator();
        /*
         * boolean hasNext()
         * 通过迭代器判断集合是否还有下一个元素可以遍历
         */
        while(it.hasNext()) {
            /*
             * E next()
             * 通过迭代器遍历集合下一个元素
             */
            String str =(String)it.next();
            if("#".equals(str)) {
                //迭代器要求在遍历的过程中不得通过集合方法增删元素,否则抛异常
//              c.remove(str);
                //迭代器的remove方法可以将本次next()遍历的元素从集合中删除
                it.remove();
            }
            System.out.println(str);
        }
        System.out.println(c);
    }



结果如下

java集合框架Collection(一)

上一篇:在安卓上运行TensorFlow:让深度学习进入移动端


下一篇:前端常见兼容性问题系列1:丢失的CSS补间动画