java集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java集合相关的知识,希望对你有一定的参考价值。
java中的集合框架
|---Collection接口:
|--List接口:存储有序的,可以重复的元素,添加进List中的元素或者对象所在的类都要重写equals()方法,便于使用Contains()方法判断是否包含
|-ArrayList:主要的实现类,底层是数组实现的,适用于要求快速读取,但不经常进行插入删除操作的,非同步,不是线程安全的
|-LinkedList:底层是以链表实现的,适用于频繁的插入删除操作,非同步,不是线程安全的
|-Vector:线程安全,插入删除操作比较慢,较少使用
|--Set接口:存储无序的,不可重复的元素,Set中常用的方法就是Collection接口提供的
1.无序性!=随机性,无序性指的是元素在底层存储的位置是无序的
2.不可重复行:当向Set中添加重复的元素时,后面这个不能加进去
3.要求添加进Set中的元素所在的类一定要重写equals()和hashcode()方法
4.Set中元素的存储方式:当向Set中添加对象时,首先调用此对象所在类的hashcode()方法,计算此对象的hash值,此hash值决定了对象在Set中的存储位置,若这个位置之前没有值,直接添加进来,若此位置已有对象存储,在通过equals()方法比较两个对象是否相同,如果相同后一个对象不能再添加进来,如果hash值一样,equals()返回false,则两个对象都存储进来,要求hashcode()方法要与equals()方法一致
|-HashSet:主要的实现类,底层实现是HashMap
|-LinkedHashSet:使用链表维护了一个添加进集合中的顺序,导致遍历时,是按照添加的顺序遍历的,插入性能低于HashSet,迭代访问全部元素时性能较高
|-TreeSet:1.向TreeSet中添加的对象必须是同一个类的
2.可以按照添加进集合中的元素的顺序遍历,像String、包装类等按照从小到大的顺序遍历
3.如果有一个Person类需要插入TreeSet,那么该类必须实现comparable接口,否则会报错
4.向TreeSet中插入自定义类的对象时,有两种排序方式:①自然排序 ②定制排序 ,当两种都存在时,定制排序优先
Ⅰ.自然排序:自定义类实现java.lang.Comparable接口,并重写其CompareTo(Object obj)方法,在此类中按方法中用的那个属性排序
Ⅱ.定制排序: 实现java.lang.Comparator接口,开发时,不能修改所要排序的类,建议使用该方式,可以多个条件排序,第一个条件一样,使用第二个排序
5.向TreeSet添加元素时,首先按照CompareTo()方法进行比较,一旦返回0,虽然是两个子属性值一样,会认为这两个对象一样,后面的那个就不会存储进来 所以要HashCode(),CompareTo(),equals()三者一致
|---Map接口:
|--HashMap:主要的实现类
|--LinkedHashMap:使用链表维护添加进Map的顺序,遍历较快,进行添加删除操作时慢于HashMap
|--TreeMap:按照添加进Map中的key的制定属性进行排序,要求key必须是同一个类的对象
|--HashTable:古老的实现类,不允许使用null值作为key和value
|---Properties:是HashTable的子类,多用于配置文件,key和value都是String类型
以上是关于java集合的主要内容,如果未能解决你的问题,请参考以下文章