这篇文章给大家分享的是有关复述中设置和列表的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
列表和设置的区别:
1,列表和设置都是接口继承于收集接口。
2,最大的不同就是列表是可以重复的。而设置是不能重复的。(注意:元素虽然无放入顺序,但是元素在中设置的位置是有该元素的3,HashCode决定的,其位置其实是固定的)
3,列表接口有三个实现类:LinkedList, ArrayList,向量,套接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
4,列表适合经常追加数据,插入,删除数据。但随机取数效率比较低。
5,设置适合经常地随机储存,插入,删除。但是在遍历时效率比较低。
设置对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于集,而不关心它的顺序,否则应该使用列表). Map同样对每个元素保存一份,但这是基于“键“的,地图也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用LinkedHashSet或者LinkedHashMap。
总结:列表有顺序有重复没有排序,设置无重复有排序,映射的键也和设置一样。如果想跟列表一样需要有插入元素的顺序,请使用LinkedHashSet或者LinkedHashMap。
列表的功能方法
实际上有两种:一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法。
列表:次序是列表最重要的特点:它保证维护元素特定的顺序.List为收集添加了许多方法,使得能够向列表中间插入与移除元素(这只推荐LinkedList使用。)一个列表可以生成ListIterator,使用它可以从两个方向遍历列表,也可以从列表中间插入和移除元素。
ArrayList:由数组实现的列表。允许对元素进行快速随机访问,但是向列表中间插入与移除元素的速度很慢.ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。
LinkedList:对顺序访问进行了优化,向列表中间插入与删除的开销并不大。随机访问则相对较慢。(使用ArrayList代替)。还具有下列方法:addFirst (), addLast(),列表(),getLast (), removeFirst()和removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈,队列和双向队列使用。例如:
ArrayList与迭代器的使用
List,列表=new ArrayList<的在(); for (int i=0;我& lt;10;我+ +){ list.add(我); } Iterator 迭代器=list.iterator (); 而(iterator.hasNext ()) { int i=iterator.next (); System.out.println(“迭代器==?+ i); } (整数我:列表){ System.out.println(“我==? i); } ListIterator listIterator=list.listIterator (); 而(listIterator.hasNext ()) { int j=listIterator.next (); System.err.println (“listIterator==?+ j); }
设置的功能方法
设置:存入组的每个元素都必须是唯一的,因为设置不保存重复元素。加入组的元素必须定义=()方法以确保对象的唯一性这里与收藏有完全一样的接口这里接口不保证维护元素的次序。
HashSet:为快速查找设计的设置。存入HashSet的对象必须定义hashCode () .
TreeSet:保存次序的,底层为树结构。使用它可以从组中提取有序的序列。
LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历集合时,结果会按元素插入的次序显示。
感谢各位的阅读!关于复述中设置和列表的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!