一些数据结构的知识
程序员文章站
2022-03-05 16:00:54
...
1:ArrayList使用数组实现List接口,所以对于快速的随机取得对象来说,使用ArrayList可以得到较好的效能,不过在移除对象或插入对象时,ArrayList就比较慢(使用 LinkedList 在这方面就好的多)。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
2:List类是以对象加入(add)容器的顺序来排列它们,如果您的对象加入之后大都是为了取出,而不会常作移除或插入(Insert)的动作,则使用ArrayList,如果您会经常从容器中作移除或插入对象的动作,则使用LinkedList会获得较好的效能。在J2SE 5.0中,LinkedList也实现了新加入的java.util.Queue接口
3:HashSet实现Set接口,Set接口继承Collection接口,Set容器中的对象都是唯一的,加入 Set容器中的对象都必须覆盖equals()方法,作为唯一性的识别,Set容器有自己的一套排序规则。
HashSet的排序规则是利用Hash Table,所以加入HashSet容器的对象还必须覆盖hashCode()方法,利用Hash的方式,可以让您快速的找到容器中的对象,在比较两个加入Set容器中的对象是否相同时,会先比较hashCode()方法传回的值是否相同,如果相同,则再使用equals()方法比较,如果两者都相同,则视为相同的对象。
加入HashSet后进行迭代输出的话和加入顺序是不一样的。LinkedHashSet就是前后一样了。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
2:List类是以对象加入(add)容器的顺序来排列它们,如果您的对象加入之后大都是为了取出,而不会常作移除或插入(Insert)的动作,则使用ArrayList,如果您会经常从容器中作移除或插入对象的动作,则使用LinkedList会获得较好的效能。在J2SE 5.0中,LinkedList也实现了新加入的java.util.Queue接口
3:HashSet实现Set接口,Set接口继承Collection接口,Set容器中的对象都是唯一的,加入 Set容器中的对象都必须覆盖equals()方法,作为唯一性的识别,Set容器有自己的一套排序规则。
HashSet的排序规则是利用Hash Table,所以加入HashSet容器的对象还必须覆盖hashCode()方法,利用Hash的方式,可以让您快速的找到容器中的对象,在比较两个加入Set容器中的对象是否相同时,会先比较hashCode()方法传回的值是否相同,如果相同,则再使用equals()方法比较,如果两者都相同,则视为相同的对象。
加入HashSet后进行迭代输出的话和加入顺序是不一样的。LinkedHashSet就是前后一样了。