1.有序集合,这里的有序指的是存取顺序用户可以精确控制列表中每个元素的插入位置
2.用户可以通过整数索引访问元素,并搜索列表中的元素与Set集合不同3.列表通常允许重复的元素
底层是数组:查找快 增删慢
底层是链表:查找慢,增删快
list集合有索引,可以使用普通for 增强for 迭代器进行遍历
迭代器,集合专用的遍历方式,就是一个对象,Iterator 三个方法: <1>Iterator<E>Iterator 获取迭代器对象 <2>hasNext(); 判断当前元素是否有元素可以被取出 <3>next()获取当前位置的元素,将迭代器对象移向下一个索引位置。
while(it.hasNext()){
System.out.println(it.next());
}
1.不可以存储重复元素
2.存取顺序不一致
3.没有索引(不能使用普通for循环遍历,不能通过索引删除修改元素)
1.不可以存储重复元素
2.存取顺序不一致
3.可以将元素按照规则进行排序(自然排序,比较器排序)
4.底层是一个红黑树
1.使用空参构造一个TreeSet,使用TreeSet存储一个引用数据类型
2.在类中实现Comparable接口,重写compareTo方法
3.重写方法时注意主要和次要条件。
package com.itheima.mytreeset;
?
public class Student implements Comparable<Student>{
private String name;
private int age;
?
public Student() {
}
?
public Student(String name, int age) {
this.name = name;
this.age = age;
}
?
public String getName() {
return name;
}
?
public void setName(String name) {
this.name = name;
}
?
public int getAge() {
return age;
}
?
public void setAge(int age) {
this.age = age;
}
?
1.用TreeSet集合存储自定义对象,带参构造方法使用的是比较器排序对元素进行排序的
2.让集合的构造方法接受Comparator的实现类对象,匿名内部类 重写compare(o1,o2)方法
3.重写方法时注意主要和次要条件。
package com.itheima.mytreeset;
?
import java.util.Comparator;
import java.util.TreeSet;
?
public class MyTreeSet4 {
public static void main(String[] args) {
TreeSet<Teacher> ts = new TreeSet<>(new Comparator<Teacher>() {
相同点:接口不同,默认使用的是自然排序 在权限不够时(string,包装类)使用比较器排序
不同点:比较规则一样
1.二叉树
2.二叉查找树:大的放右边 小的放左边
3.平衡二叉树 :左右高度不超过1
1.存取无序
2.不可以存储重复元素
3.没有索引,不能使用普通for循环遍历(get方法)
4.底层数据结构是哈希表(数组+链表+红黑树)
键不能重复,值可以重复
键与值之间是一一对应的关系
(键+值)这个整体我们称之为"键值对"或"键值对对象",在Java中又叫"Entry对象"
public static void main(String[] args) {
//创建集合并添加元素
Map<String, String> map = new HashMap<>();
map.put("1号丈夫", "1号妻子");
map.put("2号丈夫", "2号妻子");
map.put("3号丈夫", "3号妻子");
map.put("4号丈夫", "4号妻子");
map.put("5号丈夫", "5号妻子");
//1.先拿键 通过键寻找值
// Set<String> keySet = map.keySet();
// for (String s : keySet) {
// String value = map.get(s);
// System.out.println(s + value);
// }
//2.直接拿键值对 通过键值对获取key value值
// Set<Map.Entry<String, String>> entries = map.entrySet();
// for (Map.Entry<String, String> entry : entries) {
// String key = entry.getKey();
// String value = entry.getValue();
// System.out.println(key + value);
// }
?
3. map.forEach((String key,String value)->{
System.out.println(key+"--"+value);
});
?
}
1.依赖hashCode方法和equals方法保证键的唯一
2.如果键要存储自定义对象,需要重写hashCode和equals方法
3.HashMap底层是哈希表结构
1.依赖自然排序或者比较器排序,对键进行排序
2.如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则
3.TreeMap底层是红黑树结构
Tree:自然排序或者比较器排序返回值等于0
Hash:重写hashCode和equals方法
原文:https://www.cnblogs.com/zhangmeng0726/p/14623295.html