JAVA之Collections集合

一、概念:

1、集合是接口,Collections是所有集合接口的父接口,它的子接口常用的有:Set、List、Map

2、Collections集合接口:

  • 没有约束元素是否重复
  • 定义了集合运算等基本行为
  • 是集合的根接口

3、Set接口(对应于python中的set集合):

  • 继承于Collections
  • 元素不允许重复
  • 元素无序排列

4、List接口(对应于python中的list列表):

  • 继承于Collections
  • 元素允许重复
  • 元素有序排列,元素有索引号,索引号从0开始

5、Map接口(对应于python中的dict字典):

  • 继承于Collections
  • 元素允许重复
  • key是关键字,value是集合元素
  • 当key重复时,value会覆盖原来的

 二、应用:

1、对集合里面的值进行排序:

使用Collections.sort();

  • 泛型是什么,就按什么类型进行排序。
public class CollectionsDemo {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(23);
        list.add(24);
        list.add(-1);
        list.add(5);
        Collections.sort(list); //排序
        System.out.println(list);
        //结果:
        //[-1, 5, 23, 24]
        List<String> list2 = new ArrayList<>();
        list2.add("2");
        list2.add("3");
        list2.add("13");
        list2.add("23");
        Collections.sort(list2);
        System.out.println(list2);
        //结果:
        //[13, 2, 23, 3]
        //泛型是什么,就按什么类型进行排序。当泛型为String时,默认是按第一位的数值大小排序
    }
}    
  • 想要使用泛型时按照自己的规则进行排序,就要自己写比较器。
  • 重写后,sort()方法中要传入两个变量:要排序的集合、比较器。

2、重写比较器的2种方式:

1)创建对象然后重写并实现接口里的方法:

public class CollectionsDemo {
    public static void main(String[] args) {
        List<String> list3 = new ArrayList<>();
        list3.add("211");
        list3.add("3");
        list3.add("1133");
        list3.add("23");
        MyComarator mycomparator = new MyComarator();             
        Collections.sort(list3,mycomparator); 
        System.out.println(list3); 
    } 
} 

class MyComarator implements Comparator<String>{ 
//比较器是一个接口,需要实现接口。重写并实现接口里面的方法 
@Override
   public int compare(String o1, String o2) { 
        return o1.length()-o2.length();//根据字符串的长度进行比较;  
   } 
} 

//结果: 
//[3, 23, 211, 1133]   

 2)使用匿名内部类重写比较器:

  • JAVA规范:一个.java文件中只写一个类,所以使用匿名内部类比较好
public class CollectionsDemo {
    public static void main(String[] args) {
        List<String> list3 = new ArrayList<>();
        list3.add("211");
        list3.add("3");
        list3.add("1133");
        list3.add("23");
        Collections.sort(list3, new Comparator<String>() { //使用匿名内部类
            @Override
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();  //根据字符串的长度进行比较;
            }
        });
        System.out.println(list3);
        //结果:
        //[3, 23, 211, 1133]
    }
}    

 

转载于:https://www.cnblogs.com/yanwuliu/p/JAVA.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值