java有序
⑴ java中List Set Map 是否有序等总结
其实都是有序的。
不过set
和
map
的排序规则不是通常意义上拆派颂的1,2,羡中3这样排的而是按照HashCode,算法比较复杂,所以通旅郑常把set和map当作无序的
list
的有序很简单,就是按添加的顺序
⑵ java中排序方法有哪些
1、直接插入排序:最基本的插入排序,将第i个插入到前i-1个中的适当位置。
2、折半插入排序:因为是已经确定了前部分是有序序列,所以在查找插入位置的时候可以用折半查找的方法进行查找,提高效率。
3、 希尔排序: 又称缩小增量排序法。把待排序序列分成若干较小的子序列,然后逐个使用直接插入排序法排序,最后再对一个较为有序的序列进行一次排序,主要是为了减少移动的次数,提高效率。原理应该就是从无序到渐渐有序,要比直接从无序到有序移动的次数会少一些。
4、 冒泡排序:反复扫描待排序序列,在扫描的过程中顺次比较相邻的两个元素的大小,若逆序就交换位置。第一趟,从第一个数据开始,比较相邻的两个数据,(以升序为例)如果大就交换,得到一个最大数据在末尾;然后进行第二趟,只扫描前n-1个元素,得到次大的放在倒数第二位。以此类推,最后得到升序序列。如果在扫描过程中,发现没有交换,说明已经排好序列,直接终止扫描。所以最多进行n-1趟扫描。
5、快速排序: 思想:冒泡排序一次只能消除一个逆序,为了能一次消除多个逆序,采用快速排序。以一个关键字为轴,从左从右依次与其进行对比,然后交换,第一趟结束后,可以把序列分为两个子序列,然后再分段进行快速排序,达到高效。
此外还有选择、归并、分配排序等等及它们的子类排序
⑶ java有哪些有序集合
1、List:有序的collection(也称为序列)。此接口可以对列表中每个元素的插入位置进行精确地控制。可以根据元素的在列表中的位置访问元素,并搜索列表中的元素。列表允许重复的元素。
ArrayList:
特点:有序的、线性的、无固定大小的、有下标的、先进先出。
2.Set:是简单的集合,它的对象不按特定方式排序,只是简单的把对象加入集合中。不能有重复对象。
HashSet:
特点:无序的,长度可变的,不可重复的。
3.Map:Map中存入的对象是一对一对的,即每个对象和它的一个名字(键:key)关联在一起,一个键(key)只能对应一个值(value),反则不然。
HashMap:
特点:无序的、不可重复的。
⑷ JAVA中如何保证线程安全以及主键自增有序
一、常见场景 多个线程针对一个i进行主键自增。多线程下如果不做安全策略,将会导致各个现成获取的i值重复,导致脏数据常见策略1、增加syschroize进行线程同步 2、使用lock、unlock处理 3、使用reetrantent 锁进行锁定 缺点:容易造成闭仔性能低下,或者编写代码容易造成死锁二、新方案jdk新提供的功能,atomicInteger(还有其他一atomic开头的原子性操作类) AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种闭陪线程安全的加减操作接口。 原理:通过java的CAS compare and swap,简称cas原语进行操作提升性能,这个也号称乐观锁,不阻塞 观锁实际上并不加锁,当计算遇到冲突或者说前后不一致时会重轿态汪试 直到成功 CAS有3个操作数 内存值V 要跟内存值做比较的值A 和 新值 B while(true){ if(V == A){V = B;return ;}else{A = V;}}CAS的操作对象为volatile类型 volatile类型变量是:CPU直接读写变量所在的内存 而不是把变量到寄存器操作 这样对变量的操作所有线程都是可见的这样做的结果是减少了并发时冲突的概率 但不能完全避免
⑸ java arraylist是有序的吗
是有序的。
比如:List<Integer> list=new ArrayList<Integer>();
list.get(0)
一个list,第一个放进去是1,第二个放进去是2:
List<Integer> numList=new ArrayList<>();
numList.add(1);
numList.add(2);
当取第一个时numList.get(0);(下标从0开始)
打印它出来还是:1
(5)java有序扩展阅读:
LinkedList :对顺序访问进行了优化,向List中间插入与删除的开销并不大。随机访问则相对较慢。(使用ArrayList代替)还具有下列方 法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。
⑹ java有序集合
无序集: Set
有序集: List
所以,凡是实现set的AbstractSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet
都是无序的
凡是实现梁尺局List的
AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector
都是有序的
呵呵
对于补充
Map是根橡让困桥据key来存储的
所以,从这个角度讲,是有序的