您当前的位置: 首页 > 

梁云亮

暂无认证

  • 2浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

数组排序示例

梁云亮 发布时间:2019-10-12 16:31:42 ,浏览量:2

示例:数组排序(指定排序规则)
	public static void main(String[] args) {//  
		Integer[] data = { 23, 4, 78, 1, 3, 34, 65, 88, 67, 91, 19, 298, 32 };
//		Arrays.sort(data,
//		System.out.println(Arrays.toString(data),

		Comparator c = new Comparator() {
			//对数组中的任意两个元素进行比较
			//o1前面的元素  o2后面的元素
			// 如果o1-o2升序,如果o2-o1降序
			@Override
			public int compare(Integer o1, Integer o2) {
				return o2-o1;
			}
		};
		//第一参数:要排序的数组
		//第二个参数:排序规则
		Arrays.sort(data, c);
		System.out.println(Arrays.toString(data));
	}

注意:Arrays的sort方法对基本类型的数组进行排序时,得使用对应的封闭类型的数组,不能直接使用基本类型。

示例1:基本类型数组排序
public static void main(String[] args) {//psvm
        String[] data = {"zhangsan", "lii", "wanger","wangsan321" ,"qian321qi","maiz2i", "qianwu"};
        //Arrays 数组工具类
        Arrays.sort(data); //默认按照字典顺序进行排序
        for (String item : data){
            System.out.println(item);
        }
        System.out.println("-------内部类-------");
        String[]  data2 = {"zhangsan", "lii", "wanger","wangsan321" ,"qian321qi","maiz2i", "qianwu"};
        class AA implements Comparator {
            @Override
            public int compare(String o1, String o2) {
                return o1.length()-o2.length();
            }
        }
        AA aa = new AA();
        Arrays.sort(data2,aa);
        for (String item : data2){
            System.out.println(item);
        }
        System.out.println("------匿名内部类--------");
        String[]  data3 = {"zhangsan", "lii", "wanger","wangsan321" ,"qian321qi","maiz2i", "qianwu"};
        Arrays.sort(data3, new Comparator() {
            @Override
            public int compare(String o1, String o2) {
                return o1.length()- o2.length();
            }
        });
        for (String item : data3){
            System.out.println(item);
        }
        System.out.println("------Lambda表达式--------");
        String[]  data4 = {"zhangsan", "lii", "wanger","wangsan321" ,"qian321qi","maiz2i", "qianwu"};
        Arrays.sort(data4,(o1,o2)->o1.length()-o2.length());
        Stream.of(data4).forEach(System.out::println);//JAVA8流
    }
示例2:对象数组排序
  • 实体类
public class Stu {
    private int id;
    private String name;
    private float score;
    public Stu() {
    }
    public Stu(int id, String name,   float score) {
        this.id = id;
        this.name = name;
        this.score = score;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getScore() {
        return score;
    }
    public void setScore(float score) {
        this.score = score;
    }
    @Override
    public String toString() {
        return "Stu{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", score=" + score +
                '}';
    }
}
  • 测试代码
public static void main(String[] args) {//psvm
    Stu zhangsan = new Stu(1001, "zhangsan", 88.8f);
    Stu lisi = new Stu(1007, "lisi", 68.8f);
    Stu wanger = new Stu(1005, "wanger", 98.8f);
    Stu mazi = new Stu(1004, "mazi", 88.8f);
    Stu qianwu = new Stu(1002, "qianwu", 78.8f);

    //按学号排
    Stu[] data1 = {zhangsan,lisi,wanger,mazi,qianwu};
    Arrays.sort(data1, new Comparator() {
        @Override
        public int compare(Stu o1, Stu o2) {
            return o1.getId()-o2.getId();
        }
    });
    for (Stu stu : data1) {
        System.out.println(stu);
    }
    //按名称降序排
    System.out.println("-----------------");
    Stu[] data2 = {zhangsan,lisi,wanger,mazi,qianwu};
    Arrays.sort(data2,(o1,o2)->o2.getName().compareTo(o1.getName()));;
    Stream.of(data2).forEach(System.out::println);
    //按学号降序排,如果成绩相同按名称长短降序排
    System.out.println("-----------------");
    Stu zhaoliu = new Stu(1004, "zhaoliu", 88.8f);
    Stu liusong = new Stu(1002, "liusong", 78.8f);
    Stu[] data3 = {zhangsan,lisi,zhaoliu,liusong,wanger,mazi,qianwu};
    /*
    Arrays.sort(data3, new Comparator() {
        @Override
        public int compare(Stu stu1, Stu stu2) {
            if(stu1.getId() != stu2.getId()){
                return stu1.getName().length()-stu2.getName().length();
            }else {
                return stu1.getId()-stu2.getId();
            }
        }
    });
    */
    Arrays.sort(data3,(stu1,stu2)->{
        if(stu1.getId() != stu2.getId()){
            return stu1.getName().length()-stu2.getName().length();
        }else {
            return stu1.getId()-stu2.getId();
        }
    });
    Stream.of(data3).forEach(System.out::println);
}
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.7602s