Java数据结构

文章介绍了Java中不同数据结构的排序方法,包括使用Arrays.sort对普通数组进行排序,通过Collections.sort对ArrayList进行排序,以及如何在HashMap中进行排序。详细讲解了各个排序过程和常用API的使用,如ArrayList的add和get方法,以及自定义Comparator进行排序。
摘要由CSDN通过智能技术生成

1.普通数组排序

使用Arrays.sort()函数快速牌序,默认从小到大排序。

public class 排序 {
    public static void main(String []args){
        Scanner input=new Scanner(System.in);
        int a[]={8,4,3,5,6};
        Arrays.sort(a);
        for(Integer i:a){
            System.out.printf("%d ",i);
        }
        input.close();
    }
}

排序结果:3、4、5、6、8

2.动态数组(ArrayList)

2.1增强型遍历

其中Integer为数据类型,更改为动态数组a的实际数据类型。

for(Integer i:a){}
2.2其中常用API接口
a.get(index);//获取a相应下标index的数据
a.add(x);//将x添加入a
2.3排序
2.3.1默认排序方式

使用Collections.sort()函数快速排序,默认排序方式为升序,可以使用Collections.reverse()函数将结果进行翻转,实现倒序排序。

Collections.sort()//实现动态数组快速排序
Collections.reverse()//将动态数组进行翻转
2.3.2重定义排序

若升序排列,则返回o1-o2;否则降序排列,返回o2-o1.即返回值顺序与传入参数一致,则升序,相反则降序。

Collections.sort(query,new Comparator<Pair>(){//从小到大排序
            @Override
            public int compare(Pair o1,Pair o2){
                int a=o1.x-o2.x;
                int b= a==0?o1.y-o2.y:a;
                return b;
            }
        } );

3.哈希表(HashMap)

3.1增强型遍历
for(Map.Entry<Pair,Integer>item:query.entrySet()){
                if(item.getKey().x==hh&&item.getKey().y==mm){
                    query.replace(item.getKey(), item.getValue(), item.getValue()+1);
                    flag=false;
                    break;
                }
            }
3.2其他常用API接口
a.put(key,value);//添加
a.get(key);//查询key的值
a.replace(key,value);//修改
3.3排序

Java针对其并没有专门的排序API,所以为实现其的快速排序,首先要将其转化为ArrayList,然后使用Collections.sort()重定义排序方式。

ArrayList<HashMap.Entry<Character,Integer>>list=new ArrayList<>(map.entrySet());
//将HashMap转ArrayList

按照value进行升序排列

Collections.sort(list,new Comparator<HashMap.Entry<Character,Integer>>() {
            @Override
            public int compare(HashMap.Entry<Character,Integer>o1,HashMap.Entry<Character,Integer>o2){
                return o1.getValue().compareTo(o2.getValue());//
            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿宇阿星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值