小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

Java常见数据结构的排序与遍历(包括数组,List,Map)

Java,java,数据结构,list 额外说明

收录于:15天前

数组遍历与排序

  • 数组定义
//定义
int a[] = new int[5]

int[] a = new int[5];

//带初始值定义
int b[] = {
    1,2,3,4,5};
  • 任务
//定义时赋值
int b[] = {
    1,2,3,4,5};

//引用赋值
a[6] = 1
a[9] = 9   //未赋值为空
  • 价值
//通过下表取值,从0开始
b[1] = 1
b[2] = 2
  • 遍历
@Test
public void method(){
    
    int a[] = new int[5];
    for (int j = 0;j < a.length; j++){
    
        a[j] = j;
    }
    for (int j = 0;j < a.length ;j++){
    
        System.out.println(a[j]);
    }
}

数组通过下标获取值且索引从0开始,通过.length属性获取长度。

  • 种类

数组排序的方法很多,冒泡,选择,快速等,请移步各种排序算法总结(综合)感谢作者! -

这里主要介绍选择排序,核心思想:取第一位依次与后面的元素比较大小,如前者大于后者则交换位置,依次循环(升序排列),该方法共循环 (n为数组长度)
n × (n − 1) n\times (n-1)n×n-1

for(int i =0;i< b.length;i++){
    

    for (int j=i+1;j<b.length;j++){
    
        int tmp;
        tmp = b[i+1];
        b[i] = b[i+1];
        b[i+1] = b[i];

    }
}

List的遍历与排序

  • 序列表定义
//定义
ArrayList<Integer> list = new ArrayList<>();

List<?> list = null;  //接口不能实例化

List只能存储包装类和对象。ArrayList可以存储任意数据类型。

  • 任务
//定义时赋值
ArrayList<Integer>  list = new ArrayList<>(Arrays.asList(1,2,3,4,5));

list.add()  //add方法赋值
  • 价值
//通过get(index)方法取值
Integer integer = list.get(0);

索引index仍然从0开始

//修改
list.set(index,value)

//删除
list.remove(Object)
  • 遍历
@Test
//foreach 遍历
for (Integer i:list
     ) {
    
    System.out.println(i);
}


//iterator遍历
Iterator iterator = list.iterator();

while (iterator.hasNext()){
    
    System.out.println(integer);
}

//for循环遍历
for(int i =0;i<list.size();i++){
    
    System.out.println(list.get(i));
}

  • 种类
    @Test
    public void method7(){
    
        List<Integer> list = new ArrayList<>(Arrays.asList(2,1,5,4,3));
        for (int i=0;i<list.size();i++){
    
            for (int j=i;j<list.size()-1;j++){
    
                int tmp;
                if (list.get(i)> list.get(i+1)){
    
                    tmp = list.get(i+1);
                    list.set(i+1,list.get(i));
                    list.set(i,tmp);
                }
            }
        }
        for (Integer i:list
             ) {
    
            System.out.println(i);
        }
    }

在这里插入图片描述

选择排序

Map的遍历与排序

  • 地图定义
Map<?,?> map = null;
Map<?,?> Map = new HashMap<>();

Map是一个接口,无法实例化

  • 任务
@Test
public void method9(){
    
    Map<?,?> map1 = null;
    Map<String,Integer> map = new HashMap<>();
    //添加
    map.put("age",10);
    //赋值
    map.get("age");
    //修改
    map.replace("age",20);
    //删除
    map.remove("age");

}

实际使用中需要用泛型来替代,最常用的就是HashMap结构。

  • 遍历
@Test
//Map.Entry遍历
public void method10(){
    
    Map<String,String> map = new HashMap<>();
    map.put("name","_xiaoxu_");
    map.put("age","21");
    map.put("sex","男");
    //foreach遍历
    for (Map.Entry<String,String> entry: map.entrySet()
         ) {
    
        //getKey方法获取key
        System.out.println(entry.getKey());
        //getValue方法获取value
        System.out.println(entry.getValue());
        //setValue方法修改
        System.out.println(entry.setValue(""));
    }
}
//keySet遍历
for (String str:map.keySet()){
    
    System.out.println(map.get(str));
}

//

Map.Entry是Map的一个元素,一个元组(key,value)。Map是数据结构,Map.Entry是数据类型,注意区分。

  • 种类
public class MapUtil {
    

    // Map的value值降序排序
    public static <K, V extends Comparable<? super V>> Map<K, V> sortDescend(Map<K, V> map) {
    
        List<Map.Entry<K, V>> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
    
            @Override
            public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
    
                int compare = (o1.getValue()).compareTo(o2.getValue());
                return -compare;
            }
        });

        Map<K, V> returnMap = new LinkedHashMap<K, V>();
        for (Map.Entry<K, V> entry : list) {
    
            returnMap.put(entry.getKey(), entry.getValue());
        }
        return returnMap;
    }

    // Map的value值升序排序
    public static <K, V extends Comparable<? super V>> Map<K, V> sortAscend(Map<K, V> map) {
    
        List<Map.Entry<K, V>> list = new ArrayList<Map.Entry<K, V>>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
    
            @Override
            public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
    
                int compare = (o1.getValue()).compareTo(o2.getValue());
                return compare;
            }
        });

        Map<K, V> returnMap = new LinkedHashMap<K, V>();
        for (Map.Entry<K, V> entry : list) {
    
            returnMap.put(entry.getKey(), entry.getValue());
        }
        return returnMap;
    }

}
. . .

相关推荐

额外说明

rabbitmq学习(十)——消息确认机制(confirm)和交易机制(tx)

一、简介 在前面博客中,我们研究了自动应答AutoAck, channel.basicConsume(String queue, boolean autoAck, Consumer callback); 当为true时,他表示自动应答; 当为fal

额外说明

Cannot construct instance of xxxxx

Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.htt

额外说明

your MySQL server version for the right syntax to use near ‘‘ at line 1

文章目录 这个错误大概率是前端没有传值.造成where后面的值为空.where没有跟条件报错. 也有可能是@param 或mybatis的传参类型没有写 前端会报 后端会报 your MySQL server version for the right

额外说明

ES6中Symbol

1.Symbol 说明:引入一种新的原始数据类型,表示独一无二的值,Symbol值通过symbol()函数生成 let s1 = Symbol() let s2 = Symbol() console.log(s1 === s2); //fal

额外说明

【OpenCV】高手勿入! 半小时学会基本操作 5 图像处理

【OpenCV】高手勿入! 半小时学会基本操作 5 概述 图像处理 转换图像 转换成灰度图 HSV YUV 二值化操作 原图 Binary Binary Inverse Trunc Tozero Tozero Inverse 概述 OpenCV 是一个跨

额外说明

日常生活 之 有哪些道理是你慢慢才明白的?

今天给大家整理了一些生活小鸡汤,敲代码累了就来补补毒鸡汤呀。劳逸结合,打工人绝配! 1、后背,耳朵,脖颈,记住这三个部位。会有一天,你会专门回来为这句话点赞。 2、如果你追一个人超过三个月以上她还没有答应你,就没有在一起的必要了。即使在一起了,也千万别结

额外说明

解码注意力Attention机制:从技术解析到PyTorch实战

目录 引言 历史背景 重要性 二、注意力机制 基础概念 定义 组件 注意力机制的分类 举例说明 三、注意力机制的数学模型 基础数学表达式 注意力函数 计算权重 数学意义 举例解析 四、注意力网络在NLP中的应用 机器翻译 代码示例 文本摘要 代码示例 命

额外说明

类的加载过程

一、加载 1.通过一个类的全限定名获取定义此类的二进制字节流; 2.将这个字节流所代表的静态存储结构转换成为方法区的运行时数据结构; 3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据结构的访问入口。 补充:加

额外说明

一、 Mysql索引

一、 Mysql索引 001 Mysql如何实现的索引机制? MySQL中索引分三类:B+树索引、Hash索引、全文索引 002 InnoDB索引与MyISAM索引实现的区别是什么? MyISAM的索引方式都是非聚簇的,与InnoDB包含1个聚簇索引是不

额外说明

wordpress谷歌字体_如何在WordPress中添加Google翻译

WordPress 谷歌字体 We live in a diverse world where people speak many different languages. According to Linguists, there are anywhe

ads via 小工具