黑马程序员——基本篇——集合

------ android培训、java培训、期待与您交流! ----------


增加元素:
      1.1 ArrayList和LinkedList元素为有序的,即存入和取出 的顺序一致。元素可以重复,即在使用add()方法添加元素时,不进行判断,返回值按照 Collection.add(E) 的指定,直接添加,且将指定的元素添加到此列表的尾部。
      如果要去掉相同元素必须要在自定义去除相同元素的方法,在方法中将使用到contains(),此方法要使用到equals()方法,所以在对象中覆盖Object类中的equals()方法。
      1.2 HashSet和TreeSet元素为无序的,即存入和取出的顺序不一致。元素不可以重复,即在使用add()方法添加元素时,需要进行判断,如果此 set 中尚未包含指定元素,则添加指定元素。更确切地讲,如果此 set 没有包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2,则向此 set 添加指定的元素 e。如果此 set 已包含该元素,则该调用不更改 set 并返回 false。 
         对于增加字符串或者数字HashSet、TreeSet这四种都可以经过判断之后存储。
         对于添加对象,HashSe可以直接存入,因为对于HashSet来说,比较的是地址值,每个新建对象即使属性值相同,地址值也不同,所以会默认为是不同元素存入,若要去除属性值相同的元素必须要自定义方法去除,为提高效率对哈希值依据属性值进行修改,这样如果属性值不相同则哈希值也不相同可以直接判断,若哈希值相同,不进行存储,不过为了更加严谨,需要覆盖equals(),对属性值进行比较。但TreeSet不行,因为它要对元素进行比较之后按照顺序存储,而对对象来说,基于哪个属性进行排序方法内部不能自行判断,且没有默认方法,必须要继承Comparable接口,实现compareTo()方法,否则会抛出ClassCastException -(如果指定对象无法与此 set 的当前元素进行比较)。

/**
LinkedList编写栈
*/
import java.util.*;
class Duilie
{
        private LinkedList link;
        Duilie()
        {
                link = new LinkedList();
        }
        
        public void myAdd(Object obj)
        {
                link.addFirst(obj);
        }
        
        public Object myGet()
        {
                return link.pollLast();
        }
        
        public boolean isNull()
        {
                return link.isEmpty();
        }
}

public class LinkedListTest
{
        public static void main(String[] args)
        {
                Duilie dl = new Duilie();
                
                dl.myAdd("java01");
                dl.myAdd("java02");
                dl.myAdd("java03");
                dl.myAdd("java04");
                
                while(!dl.isNull())
                {
                        System.out.println(dl.myGet());
                }
        }
}


//ArrayList练习

import java.util.*;
class Person
{
        private String name;
        private int age;
        
        Person(String name, int age)
        {
                this.name = name;
                this.age = age;
        }
        
        public boolean equals(Object obj)
        {
                if(!(obj instanceof Person))
                   return false;
           
           Person p = (Person)obj;
           return this.name.equals(p.name) && this.age == p.age;
        }
        
        public String getName()
        {
                return name;
        }
        
        public int getAge()
        {
                return age;
        }
}

public class ArrayListDemo2
{
        public static void main(String[] args)
        {
                ArrayList al = new ArrayList();
                al.add(new Person("001",20));
                al.add(new Person("002",24));
                al.add(new Person("03",45));
                al.add(new Person("004",32));
                al.add(new Person("004",32));
                al.add(new Person("004",32));
                al = SingleElement(al);
                Iterator it = al.iterator();
                
                
                while(it.hasNext())
                {
                        Person p = (Person)it.next();
                        System.out.println(p.getName() + "..." + p.getAge());
                }
        }

        public static ArrayList SingleElement(ArrayList al)
        {
                ArrayList newal = new ArrayList();
                Iterator it = al.iterator();
                
                while(it.hasNext())
                {
                        Object obj = it.next();
                        if(!newal.contains(obj))
                        {
                                newal.add(obj);
                        }
                }
                
                return newal;
        }        
}

/**
TreeSet练习
*/
 import java.util.*;
class Student implements Comparable
{
        private String name;
        private int age;
        
        Student(String name, int age)
        {
                this.name = name;
                this.age = age;
        }
        
        public int compareTo(Object obj)
        {
                
                if(!(obj instanceof Student))
                        throw new RuntimeException("is not this class");
                Student s = (Student)obj;
                if(this.age < s.age)
                        return 1;
                if(this.age == s.age)
                {
                        return this.name.compareTo(s.name);
                }
                return -1;
        }
        
        public String getName()
        {
                return name;
        }
        
        public int getAge()
        {
                return age;
        }
}

public class TreeSetDemo
{
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();
                
                ts.add(new Student("004",19));
                ts.add(new Student("003",13));
                ts.add(new Student("006",17));
                ts.add(new Student("002",15));
                ts.add(new Student("0026",15));
                
                Iterator it = ts.iterator();
                while(it.hasNext())
                {
                        Object obj = it.next();
                        Student s = (Student)obj;
                        System.out.println(s.getName() + "..." + s.getAge());
                }
                
        }
}


//HashSet练习

import java.util.*;
class Person
{
        private String name;
        private int age;
        
        Person(String name, int age)
        {
                this.name = name;
                this.age = age;
        }
        
        public int hashCode()
        {
                return this.name.hashCode() +age*23;
        }
        public boolean equals(Object obj)
        {
                 if(!(obj instanceof Person))
                   return false;
           
           Person p = (Person)obj;
           return this.name.equals(p.name) && this.age == p.age; 
           
        }
        
        public String getName()
        {
                return name;
        }
        
        public int getAge()
        {
                return age;
        }
}

public class HashCodeDemo
{
        public static void main(String[] args)
        {
                HashSet hs = new HashSet();
                
                hs.add(new Person("java1", 12));
                hs.add(new Person("java2", 13));
                hs.add(new Person("java2", 13));
                hs.add(new Person("java3", 14));
                
                Iterator it =hs.iterator();
                
                while(it.hasNext())
                {
                        Person  p = (Person)it.next();
                        System.out.println(p.getName() +"..."+p.getAge());
                }
        }
}


---------- android 培训java培训、java学习型技术博客、期待与您交流!------------  


你可能感兴趣的:(黑马程序员——基本篇——集合)