淺談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());
}
}
}
運行結果為:

補充知識:java數(shù)組實現(xiàn)針對一個有序的數(shù)組插入一個數(shù)據(jù)并保持數(shù)組有序
1,排序介紹
針對這個問題,其實可以看做是插入排序中的有序排序。簡單的介紹哈,插入排序的基本思想是將一個記錄插入到已經排好序的有序表中,從而一個新的、記錄數(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,運行結果

以上這篇淺談Java中的集合存儲數(shù)據(jù)后,輸出數(shù)據(jù)的有序和無序問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
break和continue的作用和區(qū)別解析(案例分析)
break和continue都是用來控制循環(huán)結構的,主要作用是停止循環(huán),這篇文章主要介紹了break和continue的作用和區(qū)別,需要的朋友可以參考下2023-03-03
java如何實現(xiàn)遞歸刪除樹形數(shù)據(jù)的任一個節(jié)點
文章講述了在Java中實現(xiàn)遞歸刪除樹形數(shù)據(jù)的任一個節(jié)點時需要注意的三個點,包括刪除的節(jié)點包含子節(jié)點、刪除子節(jié)點和其他子節(jié)點刪除的節(jié)點不包含子節(jié)點、以及該父節(jié)點變成葉子節(jié)點,此外,文章還提到這兩件事包含在同一件事務中2024-12-12
springboot?集成easy-captcha實現(xiàn)圖像驗證碼顯示和登錄
本文主要介紹了springboot?集成easy-captcha實現(xiàn)圖像驗證碼顯示和登錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-04-04

