了解Collection集合

Collection(集合)接口概述

只能存放引用类型
集合的顶层接口,不能被实例化
常用的子接口
 1、List(有序可重复集合)
 实现类:ArrayList、LinkedList、Vector
 2、Set(无序无重复集合)
 实现类:HashSet、TreeSet
List子类的特点:
ArrayList:
1、底层数据结构是数组,查询快、增删慢
2、线程不安全,效率高
Vector:
1、底层数据结构是数组,查询快,增删慢
2、 线程安全,效率低,所有很少使用
LinkedList:
1、底层数据结构是链表,查询慢,增删快
2、 线程不安全,效率高
Set子类的特点:
HashSet:
1、不保证set的迭代顺序,
2、当存储对象时需要重写equals()和hashCode()方法
TreeSet:

3、 针对Collection集合我们应该怎么使用
是否元素唯一
 1、 是:Set
  1. 是否排序
   a) 是:TreeSet
   b) 否:HashSet
  如果不知道用哪个Set就用HashSet
 2、否:List
  1. 是否对安全性有要求
   a) 是:Vector
   b) 否:
     查询多:ArrayList
     增删多:LinkedList
  如果不知道用哪个List用ArrayList
如果知道是用集合但不知道用哪个用ArrayList

Collection集合方法及迭代器:

boolean add(object element);向集合中添加元素
int size();获取集合中元素的个数
void clear();清空集合
boolean isEmpty();判断集合中是否有元素
Object[] toArray();将集合转换成数组
boolean contains(Object o);判断集合中是否包含某个元素
boolean remove(Object o);删除集合中某个元素
Iterator iterator();获取集合所依赖的迭代器对象
代码演示:

        Collection collection=new ArrayList();
        collection.add("123");
        collection.add(1);//JDK5.0版本之后自动装箱
        collection.add("java");
        System.out.println(collection.size());//获取元素的个数——>3
        System.out.println(collection.isEmpty());//判断集合是否为空——>false
        System.out.println(collection.contains("java"));//判断集合中是否包含某个元素——>true
        System.out.println("-------------------");
        //迭代器遍历
        Iterator iterator=collection.iterator();
        while(iterator.hasNext()) {
            //向下转型
            Object s = iterator.next();
            System.out.println(s);
        }
        System.out.println("-------------------");
        //将集合转换成数组
        Object[] array = collection.toArray();
        for (int i=0;i<array.length;i++){
            System.out.println(array[i]);
        }
        System.out.println("-------------------");
        collection.remove(1);
        System.out.println(collection.size());//——>2
        collection.clear();清空集合
        System.out.println(collection.isEmpty());//——>true
        System.out.println(collection);

结果展示:

3
false
true
-------------------
123
1
java
-------------------
123
1
java
-------------------
2
true
[]

List(有序可重复集合)ArrayList集合方法及迭代器:

代码演示:

        //List集合的遍历
        List list=new ArrayList();
        list.add(0,"123");
        list.add(1,"1");
        list.add(1,"java");//在指定列表指定位置插入元素
        list.add("123");
        System.out.println(list);//——>[123, java, 1, 123]
        ListIterator iterator=list.listIterator();//ListIterator是list集合的迭代器
        //后向遍历
        while(iterator.hasNext()) {
            String s=(String)iterator.next();
            System.out.println(s);
        }
        System.out.println("-----------------");
        //前向遍历
        while(iterator.hasPrevious()) {
            String s=(String)iterator.previous();
            System.out.println(s);
        }
        System.out.println("-----------------");
        //get方法遍历
        for(int x=0;x<list.size();x++) {
            String s=(String)list.get(x);
            System.out.println(s);
        }
        System.out.println("-----------------");
        //增强for循环遍历
        for (Object o:list) {
            System.out.println(o);
        }

结果展示:

[123, java, 1, 123]
123
java
1
123
-----------------
123
1
java
123
-----------------
123
java
1
123
-----------------
123
java
1
123

Set(无序无重复集合)

Set(无序无重复集合)HashSet

代码演示:

//      Set集合遍历
        Set hashSet = new HashSet();
        hashSet.add(1);
        hashSet.add("123");
        hashSet.add(new Integer(111));
        hashSet.add(new Object());
        hashSet.add("123");
        System.out.println(hashSet.size());//——>3
        System.out.println(hashSet);//——>[1, java.lang.Object@78308db1, 123]
        //迭代器遍历
        Iterator iterator = hashSet.iterator();
        System.out.println("-----------------");
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

结果展示:

4
[1, java.lang.Object@78308db1, 123, 111]
-----------------
1
java.lang.Object@78308db1
123
111

Set(无序无重复集合)TreeSet

代码演示:

        /*TreeSet的数据结构是一个二叉树
        被存储元素实现了Comparator接口,实现了compare方法
        TreeSet集合中在添加元素的时候,默认会调用被存储元素的compare方法完成比较!
        若添加元素本身不具备可比较性可采用比较器比较*/
        //TreeSet自然排序
        SortedSet treeSet=new TreeSet();
        treeSet.add(56);
        treeSet.add(45);
        treeSet.add(98);
        treeSet.add(2);
        treeSet.add(25);
        System.out.println(treeSet);//——>[2, 25, 45, 56, 98]
        Iterator iterator = treeSet.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

结果展示:

[2, 25, 45, 56, 98]
2
25
45
56
98

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值