Java集合

一、集合的作用:

用来存储一堆元素,其中元素的数据类型可以不同,而且长度可变

二、集合体系架构:

Collection (单值存储)Map

List

有序,添加顺序,可重复

set

无序,不遵循添加顺序,无重复

key-value 键值对
ArrayListHashSetHashMap
LinkedList

Vector

(线程安全类 )

TreeSetHashtable
Stack

三、主要Collection集合:ArrayList,HashSet,TreeSet

1.ArrayList集合:

List<String> list = new ArrayList<String>();
    //添加元素
    list.add("a");
    list.add("e");
    list.add("e");
    list.add("11");
    //集合长度
    Sysout.out.println(list.size());
    //取下标为1的元素
    Sysout.out.println(list.get(1));
    

其方法可以看API帮助文档,里面有非常详细的讲解

总结一些数组和ArrayList集合的区别

  1. 集合的元素一旦被删除,后面的元素会串位

  2. 集合中size会根据实际元素的数量动态调整,而数组的长度无论元素怎么定义,都是固定的

 2.HashSet集合:

特点:非线程安全类,元素无重复,无序性

其常用方法也可以查看API帮助文档

HashSet也可以存储自定义的类:默认情况下:自定义类是依靠对象来区分是否是同一元素,对象相同则认为是同一个元素,会出现覆盖,对象不同,就算属性相同也认为不是同一个元素,不会覆盖,所以HashSet集合存储对象时,一般会根据对象的覆盖条件,重写equals以及hashCode方法

无序性的产生原因:

是因为Hash表 HashSet底层就是用Hash表来实现的(无序无重复)

hash算法:元素在容器中存储时,判断其位置的一种算法

无重复性的产生原因:

每个元素根据自身的特性,利用hash算法来计算该元素在容器中的位置,以达到相同的元素的位置相同,不同元素的位置尽量不同的一种数据结构

Hash表适合于对元素的快速定位查找

缺点:在长度一定时Hash冲突在是一定会存在的

 3.TreeSet集合: 

特点:无序(但是可以遵循人为规定的顺序),无重复,所有存储在TreeSet集合中的对象必须实现Comparable接口

public class Person implements Comparable<Person>{
    private int age;

    public int getAge() {
        return age;
    }

    public Person(int age){
        this.age = age;
    }
    //返回值负数和正数并不决定大小
    //决定了this是往前还是往后,如果返回值为负数则this更往前,反之this更往后
    //降序
    public int compareTo(Person p) {//用来判断元素在集合中的位置
        //p 另外一个是要进集合的元素 , this 已存在于集合里的对象
        if (this.age > p.age){//越小越往前
            return -1;
        }else if (this.age < p.age){
            return 1;
        }else{
            return 0;
        }
    }
    public static void main(String[] args) {
        //TreeSet集合中评判元素是否相等用的compareTo返回值为0
        Set<Person> set = new TreeSet<Person>();
        set.add(new Person(10));
        set.add(new Person(20));
        set.add(new Person(15));
        set.add(new Person(8));
        set.add(new Person(22));
        for (Person p : set){
            System.out.println(p.getAge());//8 10 15 20 22
        }
    }
}

四、Map集合(key-value 键值对)

1.HashMap:

特点:相同的键合并,与值无关

核心方法:可以查看API帮助文档

1. V put(K key, V value)
2. V get(Object key)  获取某个键所对应的值,如果值不存在则返回null
3. V remove(Object key)删除某个键与其对应的值 
4. int size()  Map集合的长度
5. boolean containsKey(Object key) 返回一个布尔类型的值,是否包含所输入的键
6. boolean containsValue(Object value)   返回一个布尔类型的值,是否包含所输入的值
7. Set<K> keySet() 获取全部的键,并形成一个Set集合

2.TreeMap:

特点:TreeMap特点:键有序,与值无关

核心方法:可以查看API帮助文档,与HashMap类似

1. V put(K key, V value)
2. V get(Object key)  获取某个键所对应的值,如果值不存在则返回null
3. V remove(Object key)删除某个键与其对应的值 
4. int size()  Map集合的长度
5. boolean containsKey(Object key) 返回一个布尔类型的值,是否包含所输入的键
6. boolean containsValue(Object value)   返回一个布尔类型的值,是否包含所输入的值
7. Set<K> keySet() 获取全部的键,并形成一个Set集合

 本人会定期发表关于Java的相关知识,如果有错误请指出,觉得好请点赞,收藏加关注,谢谢!!  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值