Collection类相关总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Collection类相关总结相关的知识,希望对你有一定的参考价值。

 

集合类的框架如下:

Collection(接口)
    List(接口):允许重复。
         ArrayList
         Vector
         LinkedList
    Set(接口):不允许重复
         HashSet
         TreeSet

Collection:由于collection是一个接口,不能实例化。

  1. collection中的方法(list继承他的方法,因此,以下方法都可以用)
    • add(E e) :往集合里新增一个元素   return  boolean
    • addAll(Collection c) 往一个集合中新增一个集合的所有元素
    • clear()  移除所有元素
    • contains(Object o)       如果此 collection 包含指定的元素,则返回 true。
    • containsAll(Collection c)    如果此 collection 包含指定 collection 中的所有元素,则返回 true。
    • isEmpty()  如果此 collection 不包含元素,则返回 true。
    • remove(Object o)           从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
    • removeAll(Collection  c)   移除此 collection 中那些也包含在参数 collection 中的所有元素
    •  retainAll(Collection  c)       交集
    • size()  返回此 collection 中的元素数
    • Object[] toArray()           返回包含此 collection 中所有元素的数组。
    • Iterator<E> iterator()    返回在此 collection 的元素上进行迭代的迭代器
          • //迭代器的几种使用方法
                    
                    Iterator<String> iterator = collection.iterator();
                    //第一种,使用iterator.next();
                    String next = iterator.next();
                    System.out.println("TestMain.main()X"+next);
                    iterator.remove();
                    System.out.println("TestMain.main()X"+next);
                    String next2 = iterator.next();
                    System.out.println("TestMain.main()X"+next2);
                    //第二种,iterator.hasnext()
                    while (iterator.hasNext()) {
                        String string = (String) iterator.next();
                        System.out.println("TestMain.main()"+string);
                    }
                 //第三种,for循环遍历
                    for (Iterator iterator2 = collection2.iterator(); iterator2.hasNext();) {
                        String string = (String) iterator2.next();
                    }

  2,list,是collection的子类

    • 遍历list中的元素,可以用iterator迭代器,也可以用list自己的迭代器ListIterator(listiterator是iterator的一个子接口)
    • //list接口
              List list=new ArrayList();
              list.add("hello");
              list.add("world");
              list.add("!");
              
              //list特有的遍历方式
              //第一种,不适用迭代器
              for(int i=0;i<list.size();i++){
                  Object object = list.get(i);
                  System.out.println("TestMain.main()"+object);
                  
              }
              //第二种,使用List特有的迭代器
              int i=0;
              //ListIterator listIterator = list.listIterator();
              while(listIterator.hasNext()){
                  Object next = listIterator.next();
                  System.out.println("ListDemo.main()"+next);
                  listIterator.set("student"+i++);
                  
              }
              //listIterator
              while(listIterator.hasPrevious()){
                  Object previous = listIterator.previous();
                  System.out.println("TestMain.main()"+previous);        
              }
              for(ListIterator listIterator=list.listIterator();listIterator.hasNext();){
                  Object next = listIterator.next();
                  System.out.println("TestMain.main()"+next);
              }

  3,ArrayList(上面的都可以实现,因为ArrayList是他们的子类)

    • ArrayList特有的方法(增强型for循环JDK1.5之后才有的) 
    • for (Object object : arrayList) {
                  System.out.println("TestMain.main()"+object);
              }
    • 需要注意的是:增强性for循环中不能同时去增加或删除集合里面的元素。不然会报java.util.ConcurrentModificationException的错误。

 4,set 

    •  set不允许重复。  
    • HashSet<Object> hashSet = new HashSet<>();
              
              //插入的是基本类型
              /*hashSet.add("student");
              hashSet.add("add");
              hashSet.add("student");*/
              //如果插入的是自己写的类,如student类中,name,age.如何判断是否为同一个
              Student student1=new Student("zhangsan",11);
              Student student2=new Student("lisi",22);
              Student student3=new Student("zhangsan",11);
              hashSet.add(student1);
              hashSet.add(student2);
              hashSet.add(student3);
              //此时需要重写student的equals方法和hashcode方法
          
              for (Object object : hashSet) {
                  System.out.println("TestMain.main()"+object);
              }

       

         

 

 

 

 

 

 

 

 

以上是关于Collection类相关总结的主要内容,如果未能解决你的问题,请参考以下文章

基础总结/集合/collection总结

总结collection类

java-Collection类-各实现类用途总结

JAVA集合类总结

常用容器(Collection)实现类总结——HashSet

collection相关方法