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”映射关系的集合