zoukankan      html  css  js  c++  java
  • Java 集合的基本用法

    package jaxpsax;
    
    import java.util.Comparator;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;
    import java.util.TreeSet;
    
    import org.junit.Test;
    
    public class Testf {
        @Test
        public void testSet() {
            // 创建集合
            Set set = new HashSet<>();
            //添加不同的对象
            set.add(23);
            set.add(23);
            set.add(new String("cc"));
            set.add(new String("cc"));
            set.add("cc");
            set.add(new Person("lf", 20));
            set.add(new Person("lf", 20));
            //遍历
            for (Object object : set) {
                System.out.println(object);
            }
            //删除对象
            set.remove(23);
            //使用迭代器遍历
            Iterator it = set.iterator();
            while (it.hasNext()) {
                Object object = (Object) it.next();
                System.out.println(object);
            }
            
            
            
        }
        
        @Test
        public void testCompare() {
            
            /*// 指定排序方法
            Set<Person> set = new TreeSet<>(new Comparator<Object>() {
    
                @Override
                public int compare(Object o1, Object o2) {
                    if (o1 instanceof Person && o2 instanceof Person) {
                        Person p1 =(Person)o1;
                        Person p2 =(Person)o2;
                        return (p1.getName().hashCode()-p2.getName().hashCode()*(p1.getAge()-p2.getAge()));
                    }
                    return 0;
                }
            });*/
            //创建TreeSet  注意:如果Person类没有实现compareTo会出现类冲突异常
            Set<Person> set = new TreeSet<Person>();
            // 添加数据
            set.add(new Person("lt", 1));
            set.add(new Person("lt", 65));
            set.add(new Person("lh", 65));
            set.add(new Person("ff", 3));
            System.out.println(set);
            
        }
        
        
    }
    package jaxpsax;
    
    public class Person implements Comparable{
        //属性
        private String name;
        private int age;
        // set和get方法
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        // 无参构造方法
        public Person() {
            this(null, 0);
        }
        // 有参构造方法
        public Person(String name,int age) {
    //        this.name = name;
    //        this.age = age;
            setName(name);
            setAge(age);
        }
        
        // 私有的方法
        public void learnSomething() {
            System.out.println("每个人都具有学习能力");
        }
        
        // 重写toString方法
        @Override
        public String toString() {
            return "name:"+name+" "+"age:"+age;
        }
        
        // 重写equals方法
        @Override
        public boolean equals(Object obj) {
            // 判断是否为空
            if (obj == null){
                return false;
            }
            // 判断是否是同一对象应用
            if (this == obj){
                return true;
            }
            // 判断是否是该类的一个实例
            if (!(obj instanceof Person)) {
                return false;
            }
            Person p = (Person)obj;
            //比较内容是否相等
            return p.name.equals(name)&&p.age==age;
        }
        // 重写hashCode方法(注意hashCode和equals方法中所用的属性必须一致)
        @Override
        public int hashCode() {
            return name.hashCode()-age;
        }
        
        //实现compareTo方法
        @Override
        public int compareTo(Object o) {
            
            return name.hashCode()-age;
        }
        
        
    }
  • 相关阅读:
    ruby 二进制转十进制 Integer("0b101") = 5
    开始菜单和我的文档的我的图片及我的音乐变成 my pictrues 正常图标了
    ruby watir 莫名其妙的错误
    Excel SaveAS是去掉提示框
    apache && jboss安装
    ruby require include的区别
    ruby控制鼠标
    This error is raised because the column 'type' is reserved for storing the class in case of inheritance
    用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
    ASP.NET 如何动态修改 Header 属性如添加 Meta 标签 keywords description!
  • 原文地址:https://www.cnblogs.com/lantu1989/p/6171252.html
Copyright © 2011-2022 走看看