List、map、set是接口,实现类结构体系如图所示。
1.List接口
ArrayList
类名 | 方法名 | 参数 | 返回值 |
add() | 1.Value 2.index,vlaue下标和值 | 布尔类型 | |
Size() | 无 | 长度 | |
ArrayList数组 | Set()设置值 | Index ,element 下标,值 | 原来在该索引下的值 |
isEmpty() | 无 | 是否为空 | |
Contains() | 无 | 是否包含 | |
Remove() | 1.Object指定的元素 2.Index 清除指定下标的值 | 被清除的值 | |
Iterator() | 无 | iterator迭代器, .hasNext()是否有下一个 .next()下一个值 | |
get() | Index | 指定索引存的元素 |
LinkedList
类名 | 方法名 | 参数 | 返回值 |
add() addFirst() addLast() | Add:1.Value 2.index,vlaue下标和值 | 布尔类型 | |
Size() | 无 | 长度 | |
LinkedList 双向链表 | Set()设置值 | Index ,element 下标,值 | 原来在该索引下的值 |
isEmpty() | 无 | 是否为空 | |
contains | 无 | 是否包含 | |
remove removeFirst() removeLast() | 1.Object指定的元素 2.Index 清除指定下标的值 | 被清除的值 | |
iterator | 无 | iterator迭代器, .hasNext()是否有下一个 .next()下一个值 | |
get getFirst getLast | Get传Index | 指定位置元素 |
队列 queue
(是基于linkedlist实现的)
Queue<String> queue=new LinkedList();
//1.offer添加元素(推荐使用)
//add添加元素,一些队列有大小限制。如果超出会报错(不推荐)
queue.offer("111");
//2.poll返回一个元素,并在队列删除
String s = queue.poll();
System.out.println(s);
//3.element返回第一个元素,在队列为空时会抛出异常(不推荐)
String s1 = queue.element();
//4.peek返回第一个元素,在队列为空时返回null(推荐)
String s2 = queue.peek();
栈stack
//1.判断是否为空,为空返回真
boolean b = stack.empty();
// 2.peek查看栈顶元素,但不删除
String s = stack.peek();
//3.pop查看栈顶对象,并删除
String s1 = stack.pop();
//4.push压入栈顶元素,并返回插入的对象
String xxx = stack.push("xxx44");
// 5.search返回对象在栈内的下标 search,以1为开始的下标
int x = stack.search("xxx44"); //1
2.Map
HashMap
存储key-value数据,采用拉链法存储(数组加链表),链表是为了解决哈希冲突问题。jdk1.8之后增加了红黑树存储。原因是当采用拉链法存储,链表长度过长时,查找的时间复杂度过高,此时将链表转成红黑树存储,提高了性能。
类名 | 方法名 | 参数 | 返回值 |
put | 1.key Value 2.index,vlaue下标和值 | 布尔类型 | |
HashMap | Size() | 无 | 长度 |
key不重复 无序 | isEmpty() | 无 | 是否为空 |
containsKey containsValue | Key/value | 是否包含某个键/值 | |
remove | Key | 删除该key对应的value,并返回 | |
get | Key | 参数key对应的value | |
clear | 无 | 清空 | |
putAll | 无 | 两个同类型的合并 | |
replace | key,value | 用新value代替该key对应的原value |
TreeMap默认按照key排序,hashmap无序。底层是二叉树。
3.Set接口
HashSet
哈希集合,集合中的元素不允许重复。基于hashmap实现。
类名 | 方法名 | 参数 | 返回值 |
add | Add:1.Value | 布尔类型 | |
HashSet (性能比linkedhashset和treeset好) | Size() | 无 | 长度 |
isEmpty() | 无 | 是否为空 | |
contains | object | 是否包含某个对象 | |
remove | object | 删除集合中的指定对象 | |
clear | 无 | 清空 | |
iterator | 无 | 迭代器,调用hasnext表示是否有下一个,next表示下一个迭代的对象 |
treeSet
基于treemap实现,按照值默认排序,也可存放自定义的对象。
类名 | 方法名 | 参数 | 返回值 |
add | Add:1.Value | 布尔类型 (默认按照字典排序) | |
treeSet 对自定义元素排序,可以基于自定义的顺序,也可以基于自然顺序 | Size() | 无 | 长度 |
isEmpty() | 无 | 是否为空 | |
contains | object | 是否包含某个对象 | |
remove | object | 删除集合中的指定对象 | |
clear | 无 | 清空 | |
iterator | 无 | 迭代器,调用hasnext表示是否有下一个,next表示下一个迭代的对象 |
插入自定义的对象
需要让类实现Compareable接口 并且重写compareTo方法
class Person implements Comparable{
//
// String name;
// int age;
// Person(String name,int age)
// {
// this.name=name;
// this.age=age;
// }
//
// @Override
// public int compareTo(Object o) {
// Person p=(Person)o;
// //先对姓名字典序比较 如果相同 比较年龄
// if(this.name.compareTo(p.name)!=0) {
// return this.name.compareTo(p.name);
// }
// else
// {
// if(this.age>p.age) return 1;
// else if(this.age<p.age) return -1;
// }
// return 0;
// }
//
// }
// TreeSet ts=new TreeSet();
// ts.add(new Person("agg",21));
}