时间:2021-05-19
HashSet , TreeSet , 无序是指存储数据的顺序和取出数据的顺序不一致;但是TreeSet 是按照指定的顺序排个序出来;
如果,我们想按照数据输入的顺序依次输出数据(即,如果依次输入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数组实现针对一个有序的数组插入一个数据并保持数组有序
1,排序介绍
针对这个问题,其实可以看做是插入排序中的有序排序。简单的介绍哈,插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。
2,思路分析
可分为三种情况来考虑,第一种头插法也就是将数据插入到数组的第一个,这种情况插入的数据是最大值或最小值。第二种情况是将数据插入到数组中,插入的数组取值范围在最大值与最小值之间。第三种情况的也就是尾插法,插入的数据是最大值或最小值。
第一种头插法
输入有序数组:arr ={2,3,6,89}
插入的记录(数据):1
输出插入数据的有序数组:arr ={1,2,3,6,89}
第二种插入数组之间
有序数组:arr ={2,3,6,89}
插入的记录(数据):5
返回的有序数组:arr ={2,3,5,6,89}
第二种尾插法
有序数组:arr ={2,3,6,89}
插入的记录(数据):100
返回的有序数组:arr ={2,3,6,89,100}
3,java代码实现
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; } //插入数据到数组之中 private List insertBody(int [] arr,int data){ int len =arr.length; int [] a =new int[len+1]; int k=0;//通过移动k插入数据 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("输入的有序数组arr为:"+Arrays.toString(arr)); System.out.println("1,头插法插入数据1后的有序数组为:"+new InsertSort().insertHead(arr,1)); System.out.println("2,在数组之中插入数据5后有序的数组为:"+new InsertSort().insertBody(arr,5)); System.out.println("3,尾插法插入数据100后的有序数组为:"+new InsertSort().insertTial(arr,100)); }}4,运行结果
以上这篇浅谈Java中的集合存储数据后,输出数据的有序和无序问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
集合和容器都是Java中的容器。区别数组特点:大小固定,只能存储相同数据类型的数据集合特点:大小可动态扩展,可以存储各种类型的数据转换数组转换为集合:Array
什么是集合 1.集合是一个可变容器 2.集合内的数据对象都是唯一的(不能重复) 3.集合是无序的存储结构,集合内的数据没有先后关系 4.
集合定义集合,集合是java中提供的一种容器,可以用来存储多个数据。特点:数组的长度是固定的。集合的长度是可变的。集合中存储的元素必须是引用类型数据‘普通for
Java中TreeSet是Set的一个子类。Set、List、Map区别Set是一个无序、不允许重复的集合。List(ArrayList、Vector等)是有序
1.顺序查找当数据存储在诸如列表的集合中时,我们说这些数据具有线性或顺序关系。每个数据元素都存储在相对于其他数据元素的位置。由于这些索引值是有序的,我们可以按顺