Set剔除重复数据和List的排序问题

一、最近用到Set来做功能,要求是不允许添加重复的对象进入,要判断两个对象是否重复,我们可以在对象里面重写其中两个方法,
equals()和hashCode()

 public static class CourseInfoBean implements Serializable{
        private String CourseName;  //课程名称
        private String CourseId;    //课程Id
        private String CourseCode;  //课程码

        //判断两个对象是否一样
        @Override
        public boolean equals(Object o){
            if(((CourseInfoBean)o).getCourseId().equals(this.getCourseId())){
                return true;
            }else{
                return false;
            }
        }

        @Override
        public int hashCode(){
            return 0;
        }

        public String getCourseName() {
            return CourseName;
        }

        public void setCourseName(String mCourseName) {
            this.CourseName = mCourseName;
        }

        public String getId() {
            return CourseId;
        }

        public void setId(String mCourseId) {
            this.CourseId = mCourseId;
        }

    }
测试函数:
Set<CourseInfoBean> bean = new HashSet<>();
CourseInfoBean c1 = new CourseInfoBean();
CourseInfoBean c2 = new CourseInfoBean();
c1.setId(1);
c2.setId(1);
c1.setCourseName("嘻嘻");
c2.setCourseName("嘻嘻");
bean.add(c1);
bean.add(c2);
//最后发现c2加不上去,原因就是我们根据Id做了处理,当Id一样的时候不添加新的对象


二、List排序问题:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
 
public class T {
  public static void main(String[] args) {
    ArrayList list = new ArrayList();
    list.add("92.8");
    list.add("68.9");
    list.add("168.61");
    list.add("242");
    list.add("317");
    list.add("105");
    // 字符串排序
    Collections.sort(list);
    System.out.println(list.toString()); // [105, 168.61, 242, 317, 68.9, 92.8]
    Collections.sort(list, new Comparator() {
      @Override
      public int compare(Object o1, Object o2) {
        return new Double((String) o1).compareTo(new Double((String) o2));
      }
    });
    System.out.println(list.toString()); // [68.9, 92.8, 105, 168.61, 242, 317]
  }
}

第二种:下面代码转载自 http://www.cnblogs.com/qqzy168/p/4098031.html
package com.test;

public class Bean {

    private String name;
    private int priority;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPriority() {
        return priority;
    }

    public void setPriority(int priority) {
        this.priority = priority;
    }

}

package com.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;

public class Test {

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void main(String[] args) {

        List<Bean> list = new ArrayList<Bean>();
        for (int i = 1; i < 10; i++) {
            Bean bean = new Bean();
            bean.setName("name_" + i);
            bean.setPriority(new Random().nextInt(10));
            list.add(bean);
        }
        // 打印
        for (Bean b : list) {
            System.out.println(b.getPriority() + "|" + b.getName());
        }

        Collections.sort(list, new Comparator() {
            public int compare(Object a, Object b) {
                int one = ((Bean) a).getPriority();
                int two = ((Bean) b).getPriority();
                return one - two;
            }
        });
        System.out.println("--------------------------------");
        // 打印
        for (Bean b : list) {
            System.out.println(b.getPriority() + "|" + b.getName());
        }
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值