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;
        }
        
        
    }
  • 相关阅读:
    关于linux内核模块Makefile的解析
    The Kernel Newbie Corner: Kernel Debugging with proc "Sequence" Files--Part 3
    The Kernel Newbie Corner: Kernel Debugging with proc "Sequence" Files--Part 2
    The Kernel Newbie Corner: Kernel Debugging Using proc "Sequence" Files--Part 1
    __KERNEL__ macro
    代码片段------find批量处理
    poll机制分析
    initrd映像文档的作用和制作
    为什么文件名要小写?
    CSS媒体查询 width VS device-width
  • 原文地址:https://www.cnblogs.com/lantu1989/p/6171252.html
Copyright © 2011-2022 走看看