最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Java中的集合存儲數(shù)據(jù)后,輸出數(shù)據(jù)的有序和無序問題

 更新時間:2020年09月25日 09:08:55   作者:G_66  
這篇文章主要介紹了淺談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的作用和區(qū)別解析(案例分析)

    break和continue都是用來控制循環(huán)結構的,主要作用是停止循環(huán),這篇文章主要介紹了break和continue的作用和區(qū)別,需要的朋友可以參考下
    2023-03-03
  • Java實體類實現(xiàn)鏈式操作實例解析

    Java實體類實現(xiàn)鏈式操作實例解析

    這篇文章主要介紹了Java實體類實現(xiàn)鏈式操作實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • java如何實現(xiàn)遞歸刪除樹形數(shù)據(jù)的任一個節(jié)點

    java如何實現(xiàn)遞歸刪除樹形數(shù)據(jù)的任一個節(jié)點

    文章講述了在Java中實現(xiàn)遞歸刪除樹形數(shù)據(jù)的任一個節(jié)點時需要注意的三個點,包括刪除的節(jié)點包含子節(jié)點、刪除子節(jié)點和其他子節(jié)點刪除的節(jié)點不包含子節(jié)點、以及該父節(jié)點變成葉子節(jié)點,此外,文章還提到這兩件事包含在同一件事務中
    2024-12-12
  • Java?Web開發(fā)環(huán)境配置詳解

    Java?Web開發(fā)環(huán)境配置詳解

    這篇文章主要介紹了Java?Web開發(fā)環(huán)境配置詳解,對初學者是個必備的過程,有需要的可以了解一下
    2016-11-11
  • jdk中密鑰和證書管理工具keytool常用命令詳解

    jdk中密鑰和證書管理工具keytool常用命令詳解

    keytool JAVA是個密鑰和證書管理工具。它使用戶能夠管理自己的公鑰/私鑰對及相關證書,用于(通過數(shù)字簽名)自我認證(用戶向別的用戶/服務認證自己)或數(shù)據(jù)完整性以及認證服務
    2014-01-01
  • Java中JDK動態(tài)代理的超詳細講解

    Java中JDK動態(tài)代理的超詳細講解

    JDK 的動態(tài)代理是基于攔截器和反射來實現(xiàn)的,JDK代理是不需要第三方庫支持的,只需要JDK環(huán)境就可以進行代理,下面這篇文章主要給大家介紹了關于Java中JDK動態(tài)代理的超詳細講解,需要的朋友可以參考下
    2022-10-10
  • java GUI編程之paint繪制操作示例

    java GUI編程之paint繪制操作示例

    這篇文章主要介紹了java GUI編程之paint繪制操作,結合實例形式詳細分析了java GUI編程paint繪制相關操作技巧與使用注意事項,需要的朋友可以參考下
    2020-01-01
  • 詳解Java 打印堆棧的幾種方法

    詳解Java 打印堆棧的幾種方法

    本篇文章主要介紹了Java 打印堆棧的幾種方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • springboot?集成easy-captcha實現(xiàn)圖像驗證碼顯示和登錄

    springboot?集成easy-captcha實現(xiàn)圖像驗證碼顯示和登錄

    本文主要介紹了springboot?集成easy-captcha實現(xiàn)圖像驗證碼顯示和登錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 簡述Java中的四種引用類型

    簡述Java中的四種引用類型

    從JDK1.2版本開始,把對象的引用分為四種級別,從而使程序能更加靈活的控制對象的生命周期。這四種級別由高到低依次為:強引用、軟引用、弱引用和虛引用,下面分別介紹下這四種引用。
    2021-04-04

最新評論

林芝县| 广丰县| 常熟市| 读书| 玉林市| 哈尔滨市| 安国市| 兰州市| 兴和县| 邹城市| 兴安盟| 太仆寺旗| 清丰县| 青川县| 南华县| 太谷县| 郯城县| 青龙| 舒兰市| 东辽县| 文登市| 得荣县| 思茅市| 田阳县| 枣庄市| 丽水市| 阿拉善左旗| 东城区| 太谷县| 勐海县| 通山县| 资溪县| 南通市| 红桥区| 万山特区| 蒙自县| 凤翔县| 南阳市| 临城县| 江源县| 嘉义县|