集合

1 Java的集合可以分为Collection和Map两种体系

①Conllection接口

set:元素无序,不可重复

list:元素有序,可以重复

实例代码讲解:

 1 import java.util.ArrayList;
 2 import java.util.Date;
 3 import java.util.Iterator;
 4 import java.util.LinkedHashSet;
 5 import java.util.List;
 6 import java.util.Set;
 7 
 8 import org.junit.Test;
 9 
10 /*
11  * 存储方式:1.顺序结构 2.链式存储
12  * 
13  * 1.数据的存储的“容器”:①数组 int[] arr = new int[10]②集合
14  * 2.Collection:用来存储一个一个的数据
15  *         |-----Set:存储无序的、不可重复的数据--相当于高中的"集合"--“哈希算法”
16  *             |----HashSet:主要的实现类
17  *                 |----LinkedHashSet:对于频繁的遍历,效率高
18  *             |----TreeSet:可以按照添加的元素的指定属性进行排序遍历(自然排序Comparable(compareTo(Object obj))&定制排序Comparator(compare(Obejct obj1,Object obj2)))
19  *         |-----List:存储有序的、可以重复的数据--相当于"动态"数组
20  *             |----ArrayList:主要实现类,线程不安全的
21  *             |----LinkedList:对于频繁的插入、删除操作,效率高于ArrayList
22  *             |----Vector:古老的实现类,线程安全的
23  * 
24  *   Map:用来存储一对一对的数据(key-value)---相当于y = f(x). y = x + 1;(x1,y1)(x2,y2)
25  *           |----HashMap
26  *               |----LinkedHashMap
27  *           |----TreeMap
28  *           |----Hashtable
29  *               |----Properties
30  */
31 public class TestCollection {
32 
33     @Test
34     public void test2(){
35         Set set = new LinkedHashSet();
36         set.add(123);
37         set.add("AA");
38         set.add("MM");
39         set.add("GG");
40         set.add("GG");
41         //原则:添加自定义类的对象到Set中时,需要自定义对象所在的类重写:equals()且hashCode();
42         set.add(new Person("谢霆锋",32));
43         set.add(new Person("谢霆锋",32));
44         set.add(new Person("王菲",23));
45         
46         System.out.println(set.toString());
47         
48     }
49     @Test
50     public void test1(){
51         List list = new ArrayList();
52         System.out.println(list.size());//0
53         
54         list.add("AA");
55         list.add(123);
56         list.add(123);
57         list.add(new Date());
58         
59         Iterator iterator = list.iterator();
60         while(iterator.hasNext()){
61             System.out.println(iterator.next());
62         }
63         
64     }
65 }

 

 1 public class Person {
 2     String name;
 3     int age;
 4     public Person(String name, int age) {
 5         super();
 6         this.name = name;
 7         this.age = age;
 8     }
 9     @Override
10     public String toString() {
11         return "Person [name=" + name + ", age=" + age + "]";
12     }
13     @Override
14     public int hashCode() {
15         final int prime = 31;
16         int result = 1;
17         result = prime * result + age;
18         result = prime * result + ((name == null) ? 0 : name.hashCode());
19         return result;
20     }
21     @Override
22     public boolean equals(Object obj) {
23         if (this == obj)
24             return true;
25         if (obj == null)
26             return false;
27         if (getClass() != obj.getClass())
28             return false;
29         Person other = (Person) obj;
30         if (age != other.age)
31             return false;
32         if (name == null) {
33             if (other.name != null)
34                 return false;
35         } else if (!name.equals(other.name))
36             return false;
37         return true;
38     }
39     
40     
41 }

 

 

如何实现List、Set,数组之间的转换

ArraryList list=new ArraryList()    造一个数组链表list

Set set=new HashSet(list)  把list转化成Set

List list1=new ArraryList(set)  把set转化为list1

 

 

②Map接口:具有“key-value”映射关系的集合

 

posted @ 2016-05-17 09:19  Dorsey_fox  阅读(268)  评论(0编辑  收藏  举报