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

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路Java常见数据结构的排序与遍历(包括数组,List,Map),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

数组遍历与排序

  • 数组定义
//定义
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×n1

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<?,?> 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;
    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156193.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!