集合

1、List接口

List集合可以存储有序的,可重复元素的集合。

List接口常用的子类:

  • ArrayList集合,数据存储结构是数组,查找快,增删慢
  • LinkedList集合,数据存储结构是链表,查找慢,增删快
 1 package list;
 2 
 3 import java.util.LinkedList;
 4 
 5 /**
 6  * <p>Description:LinkedList方法演示 </p>
 7  * @author Administrator
 8  * @date 2018年10月29日下午5:36:55
 9  */
10 public class LinkedListDemo {
11 
12     public static void main(String[] args) {
13         // 创建对象
14         LinkedList<String> link = new LinkedList<String>();
15         // 添加元素
16         link.add("baidu");
17         link.add("alibaba");
18         link.add("tenxun");
19         // 获取元素
20         System.out.println(link.getFirst());
21         System.out.println(link.getLast());
22         // 删除元素
23         System.out.println(link.removeFirst());
24         System.out.println(link.removeLast());
25         // 判断集合是否为空
26         while (!link.isEmpty()) {
27             // 弹出栈顶元素
28             System.out.println(link.pop());
29         }
30     }
31 
32 }

 

2、Set接口

Set接口可以存储无序的,不可重复的元素。

Set接口常用子类:

  • HashSet集合,存储结构为哈希表
  • LinkedHashSet集合,存储结构为哈希表加链表
 1 package list;
 2 /**
 3  * <p>Description:学生类 </p>
 4  * @author Administrator
 5  * @date 2018年10月29日下午10:26:43
 6  */
 7 public class Student {
 8     private String name;    // 姓名
 9     private int age;        // 年龄
10     // 构造方法
11     public Student(String name, int age) {
12         super();
13         this.name = name;
14         this.age = age;
15     }
16     // 访问姓名方法
17     public String getName() {
18         return name;
19     }
20     // 设置姓名方法
21     public void setName(String name) {
22         this.name = name;
23     }
24     // 访问年龄方法
25     public int getAge() {
26         return age;
27     }
28     // 设置年龄方法
29     public void setAge(int age) {
30         this.age = age;
31     }
32     @Override
33     public String toString() {
34         return "Student [name=" + name + ", age=" + age + "]";
35     }
36     @Override
37     public int hashCode() {
38         final int prime = 31;
39         int result = 1;
40         result = prime*result + age;
41         result = prime*result + ((name == null) ? 0 : name.hashCode());
42         return result;
43     }
44     @Override
45     public boolean equals(Object obj) {
46         if (this == obj) {
47             return true;
48         }
49         if (!(obj instanceof Student)) {
50             System.out.println("类型错误");
51             return false;
52         }
53         Student other = (Student)obj;
54         return this.age == other.age && this.name.equals(other.name);
55     }
56     
57 }
 1 package list;
 2 
 3 import java.util.HashSet;
 4 import java.util.Iterator;
 5 
 6 /**
 7  * <p>Description:HashSet存储Student类演示 </p>
 8  * @author Administrator
 9  * @date 2018年10月29日下午10:42:06
10  */
11 public class HashSetDemo {
12 
13     public static void main(String[] args) {
14         // 创建HashSet对象
15         HashSet<Student> hs = new HashSet<Student>();
16         // 向集合中添加Student对象
17         hs.add(new Student("张三", 18));
18         hs.add(new Student("李四", 20));
19         hs.add(new Student("王五", 22));
20         // 取出集合中的每个元素
21         Iterator<Student> it = hs.iterator();
22         while (it.hasNext()) {
23             System.out.println(it.next());
24         }
25     }
26 
27 }
 1 package list;
 2 
 3 import java.util.Iterator;
 4 import java.util.LinkedHashSet;
 5 import java.util.Set;
 6 
 7 /**
 8  * <p>Description:LinkedHashSet存取演示 </p>
 9  * @author Administrator
10  * @date 2018年10月29日下午10:49:05
11  */
12 public class LinkedHashSetDemo {
13 
14     public static void main(String[] args) {
15         // 创建LinkedHashSet对象
16         Set<String> set = new LinkedHashSet<String>();
17         // 向集合中添加元素
18         set.add("bbb");
19         set.add("aaa");
20         set.add("abc");
21         set.add("bbc");
22         // 迭代取出元素
23         Iterator<String> it =set.iterator();
24         while (it.hasNext()) {
25             System.out.println(it.next());
26         }
27     }
28 
29 }

 

 

posted @ 2018-10-29 23:05  AlphaJunS  阅读(188)  评论(0编辑  收藏  举报