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 }