淺談Java中的集合存儲數(shù)據(jù)后,輸出數(shù)據(jù)的有序和無序問題
HashSet , TreeSet , 無序是指存儲數(shù)據(jù)的順序和取出數(shù)據(jù)的順序不一致;但是TreeSet 是按照指定的順序排個序出來;
如果,我們想按照數(shù)據(jù)輸入的順序依次輸出數(shù)據(jù)(即,如果依次輸入4、1、7、3,輸出時依次是4、1、7、3),此時需要用LinkedHashMap ,LinkedHashSet
package Demo; import java.util.*; import java.util.Map.*; public class DemoMap { public static void main(String[] args) { text3(); System.out.println("=========================================="); text4(); } public static void text3(){ Map<Integer,String> DemoMap=new HashMap<Integer,String>(); DemoMap.put(4, "dddd"); DemoMap.put(1, "a"); DemoMap.put(3, "ccc"); DemoMap.put(2, "bb"); Iterator<Map.Entry<Integer , String>> it =DemoMap.entrySet().iterator(); while(it.hasNext()){ System.out.println(it.next()); } } public static void text4(){ Map<Integer,String> DemoMap=new LinkedHashMap<Integer,String>(); DemoMap.put(4, "dddd"); DemoMap.put(1, "a"); DemoMap.put(3, "ccc"); DemoMap.put(2, "bb"); Iterator<Map.Entry<Integer , String>> it =DemoMap.entrySet().iterator(); while(it.hasNext()){ System.out.println(it.next()); } } }
運行結(jié)果為:
補充知識:java數(shù)組實現(xiàn)針對一個有序的數(shù)組插入一個數(shù)據(jù)并保持?jǐn)?shù)組有序
1,排序介紹
針對這個問題,其實可以看做是插入排序中的有序排序。簡單的介紹哈,插入排序的基本思想是將一個記錄插入到已經(jīng)排好序的有序表中,從而一個新的、記錄數(shù)增1的有序表。
2,思路分析
可分為三種情況來考慮,第一種頭插法也就是將數(shù)據(jù)插入到數(shù)組的第一個,這種情況插入的數(shù)據(jù)是最大值或最小值。第二種情況是將數(shù)據(jù)插入到數(shù)組中,插入的數(shù)組取值范圍在最大值與最小值之間。第三種情況的也就是尾插法,插入的數(shù)據(jù)是最大值或最小值。
第一種頭插法
輸入有序數(shù)組:arr ={2,3,6,89}
插入的記錄(數(shù)據(jù)):1
輸出插入數(shù)據(jù)的有序數(shù)組:arr ={1,2,3,6,89}
第二種插入數(shù)組之間
有序數(shù)組:arr ={2,3,6,89}
插入的記錄(數(shù)據(jù)):5
返回的有序數(shù)組:arr ={2,3,5,6,89}
第二種尾插法
有序數(shù)組:arr ={2,3,6,89}
插入的記錄(數(shù)據(jù)):100
返回的有序數(shù)組:arr ={2,3,6,89,100}
3,java代碼實現(xiàn)
package sort; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * project_name: JavaDemo * filename: InsertSort * IDE: IntelliJ IDEA * author: ganxiang * CreateDate:2020-07-18 16:04 */ public class InsertSort { //頭插法 private List insertHead(int [] arr,int data){ int len =arr.length; int [] a =new int[len+1]; int k=0; if (data<=arr[0]) a[k]=data; for (int i = 0; i <=len-1 ; i++) { k+=1; a[k]=arr[i]; } List<Integer> list =new ArrayList<>(); for (int num:a) { list.add(num); } return list; } //插入數(shù)據(jù)到數(shù)組之中 private List insertBody(int [] arr,int data){ int len =arr.length; int [] a =new int[len+1]; int k=0;//通過移動k插入數(shù)據(jù) for (int i = 0; i <=len-1 ; i++) { if(data>=arr[i]&&data<=arr[i+1]){ a[k]=arr[i]; k+=1; a[k]=data; i+=1; k+=1; } a[k]=arr[i]; k+=1; } // System.out.println(Arrays.toString(a)); List<Integer> list =new ArrayList<>(); for (int num:a) { list.add(num); } return list; } //尾插法 private List insertTial(int [] arr,int data) { int len = arr.length; int[] a = new int[len + 1]; int k = 0; for (int i = 0; i <= len - 1; i++) { a[k] = arr[i]; k += 1; } if (data >= arr[len - 1]) a[k] = data; List<Integer> list = new ArrayList<>(); for (int num : a) { list.add(num); } return list; } public static void main(String[] args) { int [] arr ={2,3,6,89}; System.out.println("輸入的有序數(shù)組arr為:"+Arrays.toString(arr)); System.out.println("1,頭插法插入數(shù)據(jù)1后的有序數(shù)組為:"+new InsertSort().insertHead(arr,1)); System.out.println("2,在數(shù)組之中插入數(shù)據(jù)5后有序的數(shù)組為:"+new InsertSort().insertBody(arr,5)); System.out.println("3,尾插法插入數(shù)據(jù)100后的有序數(shù)組為:"+new InsertSort().insertTial(arr,100)); } }
4,運行結(jié)果
以上這篇淺談Java中的集合存儲數(shù)據(jù)后,輸出數(shù)據(jù)的有序和無序問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Java 實現(xiàn)Redis存儲復(fù)雜json格式數(shù)據(jù)并返回給前端
- java8中NIO緩沖區(qū)(Buffer)的數(shù)據(jù)存儲詳解
- Java字節(jié)與字符流永久存儲json數(shù)據(jù)
- 淺談java 數(shù)據(jù)處理(int[][]存儲與讀取)
- 相冊管理系統(tǒng)(Java表單+xml數(shù)據(jù)庫存儲)
- JSON復(fù)雜數(shù)據(jù)處理之Json樹形結(jié)構(gòu)數(shù)據(jù)轉(zhuǎn)Java對象并存儲到數(shù)據(jù)庫的實現(xiàn)
- java實現(xiàn)表格數(shù)據(jù)的存儲
相關(guān)文章
openGauss數(shù)據(jù)庫JDBC環(huán)境連接配置的詳細(xì)過程(Eclipse)
這篇文章主要介紹了openGauss數(shù)據(jù)庫JDBC環(huán)境連接配置(Eclipse),演示基于JDBC開發(fā)的主要步驟,會涉及創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、插入數(shù)據(jù)等,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06Spring security基于數(shù)據(jù)庫中賬戶密碼認(rèn)證
這篇文章主要介紹了Spring security基于數(shù)據(jù)庫中賬戶密碼認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03SpringBoot進(jìn)行Web開發(fā)的實現(xiàn)
Spring?Boot讓我們可以快速構(gòu)建項目并運行web應(yīng)用,大大簡化了Spring的復(fù)雜配置,本文主要介紹了SpringBoot進(jìn)行Web開發(fā)的實現(xiàn),感興趣的可以了解一下2023-10-10如何使用Java模擬退火算法優(yōu)化Hash函數(shù)
為了解決局部最優(yōu)解問題,1983年,Kirkpatrick等提出了模擬退火算法(SA)能有效的解決局部最優(yōu)解問題。模擬退火算法包含兩個部分即Metropolis算法和退火過程。Metropolis算法就是如何在局部最優(yōu)解的情況下讓其跳出來,是退火的基礎(chǔ)2021-06-06Java 實戰(zhàn)范例之進(jìn)銷存管理系統(tǒng)的實現(xiàn)
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實現(xiàn)一個前后端分離的進(jìn)銷存管理系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11Java字符串相關(guān)類StringBuffer的用法詳解
java.lang包下的StringBuffer類,代表著可變的字符序列,可以用來對字符串內(nèi)容進(jìn)行增刪改操作。本文將通過示例詳細(xì)說說它的用法,感興趣的可以跟隨小編一起學(xué)習(xí)一下2022-10-10