2022-06-10
Collection 集合的顶级接口:
Collection接口的实现子类可以存放多个元素,每个元素可以是Object
有些Collection接口的实现类,可以存放重复的元素,有些不可以
有些Collection接口的实现类,是有序的(List),有些不是有序的(Set)
Collection接口没有直接的实现子类,是通过它的子接口Set 和 List来实现的
集合框架 List接口,必须指定一个泛型
- ArrayList 基于数组的集合
- Vector 基于数组的集合,更安全
- LinkedList 基于链表的集合
1 public static <E> void main(String[] args) {
2 // 搞一个放名字的集合
3 List<String> as = new ArrayList<String>();
4 // 往里面放东西
5 as.add("小黑");
6 as.add("小明");
7 // 拿东西
8 System.out.println(as.get(0));
9 System.out.println(as.get(1));
10 // 删东西(delete,remove)
11 as.remove("小黑");
12 // 拿东西
13 System.out.println(as.get(0));
14 // 放东西
15 ArrayList<String> bs = new ArrayList<String>();
16 bs.add("啊啊");
17 bs.add("bb");
18 bs.add("cc");
19 as.addAll(bs);
20 // 不知道里面有什么东西
21 for (int i = 0; i < as.size(); i++) {
22 System.out.println(as.get(i));
23 // as.get(i) == as[i]
24 }
25 for (String s : as) {
26 System.out.println(s);
27 }
28 // 查看长度(length,size)
29 System.out.println(as.size());
30
31 // 数组的空间必须是连续的
32 // 随机查找:根据下标取值
33 // ArrayList其实就是一个数组
34 // 扩容的原理:新建一个更大的数组,把原来的数组的内容复制过去
35 ArrayList<String> fs = new ArrayList<String>(2);
36 fs.add("a");
37 fs.add("a");
38 fs.add("a");
39
40 // 链表和数组的区别:
41 // 数组查询效率搞
42 // 链表是扩容,删除效率搞
43
44 // 链表:一些不连续的空间,彼此有联系
45 /**
46 LinkedList<String> ls=new LinkedList<String>();
47 ls.get(2);
48 ls.getFirst();
49 ls.getLast();
50 **/
51 }
52 }
Set接口: 去重,顺序不一致无下标
- HashSet
- HashTable 安全
- TreeSet 排序功能的set
1 public static void main(String[] args) {
2 //Set集合: 去重
3 Set<String> set=new HashSet<String>();
4 set.add("小黑");
5 set.add("小百");
6 set.add("小黑");
7 for (String s : set) {
8 System.out.println(s);
9 }
10 System.out.println(set.size());
11
12 //新建一个存放数字的ArrayList
13 List<Integer> is=new ArrayList<Integer>();
14 is.add(12);
15
16 set.clear();
17 System.out.println(set.size());
18
19 /**
20 Set<Dog> ds = new HashSet<Dog>();
21 // 只要名字相同 认为它们是同一只狗
22 // hashset内容用的是hashcode+equals做相等判断
23 ds.add(new Dog("xiaobai","a"));
24 ds.add(new Dog("xiaobai","b"));
25 System.out.println(ds.size());
26 //给出一只狗 判断这只狗是否在集合中存在
27 Dog d = new Dog("xiaobai","c");
28 System.out.println(ds.contains(d));
29 **/
30
31 /**
32 List ls=new ArrayList();
33 ls.add(1);
34 ls.add(2);
35 ls.add(3);
36 ls.add(4);
37 ls.add("a");
38 ls.add("b");
39 ls.add("c");
40 ls.add("d");
41 ls.add(new Dog("aa", "bb"));
42 System.out.println(ls.contains(new Dog("aa", "bb")));
43 **/
44
45 //去重:有则不加,无则加
46 List<Dog> ls=new ArrayList<Dog>();
47 for (int i = 0; i < 3; i++) {
48 System.out.println("请输入狗的名字");
49 Scanner mys = new Scanner(System.in);
50 Dog d=new Dog(mys.next(), "bb");
51 if(!ls.contains(d)) {
52 ls.add(d);
53 }
54 }
55 System.out.println(ls.size());
56 }
57
58 }
Map接口(S2)