Java集合类详解

  • 集合的概述
    • 集合类存放于java.util包中。
      集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。

贝贝熊语录:集合就是生活中的容器,用来存放东西用的,由于Java是面向对象的语言,所以对于集合而言就是放对象的容器,只不过对于数组而言,集合不固定长度

  • 集合的关系

    这里写图片描述

  • List集合的介绍

public void creatList(){
        /**
         * 如何创建一个 ArrayList 或者 LinkedList
         *  1.普通的创建
         *  2.接口回掉
         * 注意:<>里面代表的是泛型
         */

        ArrayList<String> arrayList = new ArrayList<String>();      //普通的创建
        LinkedList<String> linkedList = new LinkedList<String>();   //普通的创建

        List<String> arrayList2 = new ArrayList<String>();          //接口回掉
        List<String> linkedList2 = new ArrayList<String>();         //接口回掉

        /**
         * 如何添加 ArrayList 或者 LinkedList 的元素
         * 方法:Boolean b = add(E e)
         */
        arrayList.add("我爱CSDN");
        linkedList.add("我爱CSDN");

        /**
         * 如何取 ArrayList 或者 LinkedList 的元素
         * 方法:E e = get(index)
         */
        String str = arrayList.get(0);
        String str2 = linkedList.get(0);

        /**
         * 如何删除 ArrayList 或者 LinkedList 的元素
         * 方法:E e = remove(index)
         */
        String e = arrayList.remove(0);
        String e2 = linkedList.remove(0);

    }

贝贝熊语录:
ArrayList 或者 LinkedList都是list接口下面的,他们放入的元素是有序的
区别在于:ArrayList内部维护的是数组,而LinkedList内部维护的是链表
因此导致ArrayList查询数据比较快,而LinkedList删除数据比较快

  • Set集合的介绍
public static void main(String[] args) {  
        //Set 集合存和取的顺序不一致。  
        Set hs = new HashSet();  
        hs.add("世界");  
        hs.add("兵器");  
        hs.add("舰船");  
        hs.add("汉和");  
        Iterator it = hs.iterator();  
        while (it.hasNext()) {  
            System.out.println(it.next());  
        }  
    }  
public static void main(String[] args) {  
        HashSet hs = new HashSet();  
        hs.add(new Person("jack", 20));  
        hs.add(new Person("rose", 20));  
        hs.add(new Person("hmm", 20));  
        hs.add(new Person("lilei", 20));  
        hs.add(new Person("jack", 20));  

        Iterator it = hs.iterator();  
        while (it.hasNext()) {  
            Object next = it.next();  
            System.out.println(next);  
        }  
    }  
/**
 * 一批数据,要求不能重复存储元素,而且要排序。ArrayList 、 LinkedList不能去除重复数据。
 * HashSet可以去除重复,但是是无序。
 *所以这时候就要使用TreeSet了
 */
  public static void main(String[] args) {  
        TreeSet ts = new TreeSet();  
        ts.add("ccc");  
        ts.add("aaa");  
        ts.add("ddd");  
        ts.add("bbb");  

        System.out.println(ts); // [aaa, bbb, ccc, ddd]  

    }
  • Map集合的介绍

HashMap Hashtable TreeMap区别
1、HashMap:允许null键null值Hashtable:不允许null键null值TreeMap:允许null值不允许null键
2、TreeMap的输出会按照key默认排序(根据ASCII码表)
3、HashMap非同步处理 速度快 不安全 Hashtable 同步处理速度慢 安全
4、HashMap的输出是无序的

1、添加:  
    1、V put(K key, V value)    (可以相同的key值,但是添加的value值会覆  
盖前面的,返回值是前一个,如果没有就返回null)                                            
    2、putAll(Map<? extends K,? extends V> m)  从指定映射中将所有映射关  
系复制到此映射中(可选操作)。  
2、删除  
    1、remove()    删除关联对象,指定key对象  
    2、clear()     清空集合对象  
3、获取  
     1:value get(key); 可以用于判断键是否存在的情况。当指定的键不存在的时候,返  
回的是null。  

3、判断:  
    1boolean isEmpty()   长度为0返回true否则false  
    2boolean containsKey(Object key)  判断集合中是否包含指定的key  
3boolean containsValue(Object value)  判断集合中是否包含指定的value  
4、长度:  
Int size()  
  • 迭代器的介绍

java迭代器是用来遍历集合的
Iterator迭代器:
1.它是一个接口,是不能实例化的。
只能接收集合类对象调用自己的iterator方法来生成的Iterator对象
2.迭代器Iterator有3个方法
boolean hasNext()如果仍有元素可以迭代(用来判断当前指针指向的下一位置是否还有元素),有返回true
E next() 返回迭代的下一个元素(指针指向下一位置,并返回指向的元素)
void remove()删除当前迭代的元素
3. 用来遍历集合时,需要hasNext()方法和next()方法配合使用
4.在遍历的过程中,不允许对集合进行增删操作。如果想要对集合进行删除操作,也必须调用迭代器的remove()方法

 public static void main(String[] args) {  
        List<String>list=new ArrayList<>();  
        list.add("a");  
        list.add("b");  
        Iterator<String>it=list.iterator();//得到lits的迭代器  
        //调用迭代器的hasNext方法,判断是否有下一个元素  
        while (it.hasNext()) {  
            //将迭代器的下标移动一位,并得到当前位置的元素值  
            System.out.println(it.next());    
        }     
    }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值