跳到主要内容

5. 常用类

常用类

1. LinkedList【链表】

Java.util.LinkedList

1.1. 使用

LinkedList<String> list = new LinkedList<String>();

1.2. 常用方法

add
boolean add(E element) // 将指定元素添加到此列表的末尾
void add(int index, E e) // 将指定的元素插入此列表中的指定位置
void addFirst(E e) // 将指定元素插入此列表的开头
void addLast(E e) // 将指定元素添加到此列表的结尾

clear
void clear() // 从此列表中删除所有元素

remove
boolean remove(E e) // 从此列表中移除第一次出现的指定元素e(如果存在)
E remove(int index) // 移除此列表中指定位置的元素
E removeFirst() // 移除并返回此列表的第一个元素
E removeLast() // 移除并返回此列表的最后一个元素

get
E get(int index) // 返回此列表中指定位置的元素
E getFirst() // 返回此列表的第一个元素
E getLast() // 返回此列表的最后一个元素

set
E set(int index, E e) // 用指定元素e替换此列表中指定位置的元素,并返回原来的元素

size
int size() // 返回此列表中的元素数

indexOf
int indexOf(E e) // 返回此列表中 首次 出现的指定元素e的索引(即位置),如果此列表不包含该元素,则返回 -1
int lastIndexOf(E e) // 返回此列表中 最后一次 出现的指定元素e的索引(即位置),如果此列表不包含该元素,则返回 -1

contains
boolean contains(E e) // 如果此列表包含指定的元素e,则返回 true

clone
Object clone() // 返回此 LinkedList 实例的浅表副本,即改变副本不会改变原本

2. TreeMap【树】

Java.util.TreeMap

2.1. 简易版使用

main函数里

TreeMap<Integer, Student> tm = new TreeMap<Integer, Student>(); //Integer为键(排序用),Student为值(被排序的信息)

//添加
Student stu1 = new Student("张三", 18);
tm.put(stu1.getAge(), stu1); //将stu1的年龄作为键,stu1作为值存入treeMap

//获取TreeMap长度
int num = tm.size(); //获取tm的长度
System.out.println("TreeMap的长度为:" + num);

//输出
Collection<Student> collection = tm.values(); //获取tm中的所有值
Iterator<Student> it = collection.iterator(); //获取迭代器
while (it.hasNext()) { //遍历
Student temp = it.next();
System.out.println(temp.getName() + "," + temp.getAge());
}

2.2. 更合适的使用

problem

运行完上述代码后会发现,当有两个对象的键相同时,后添加的对象会覆盖掉前面的对象
这显然不是我们想要的结果,所以我们需要重写 Comparable 类下的 compareTo()方法,使其能够比较两个对象的键,从而决定是否覆盖。

添加Key类实现Comparable接口
public class Key implements Comparable<Key> {
double num = 0; // 排序用的键
public Key(double num) { // 构造方法
this.num = num;
}

@Override
public int compareTo(Object b) { // 重写compareTo方法
Key t = (Key) b; // 将Object类型的b转换为Key类型
if (this.num == t.num) { // 如果两个键相等,返回任意正值
return 1;
else
return (int) ((this.num - t.num)*10); // 如果两个键不相等,返回两个键的差值*10
}
}
main函数里
TreeMap<Key, Student> tm = new TreeMap<Key, Student>(); //Key为键(排序用),Student为值(被排序的信息)

Student stu1 = new Student("张三", 18);
tm.put(new Key(stu1.getAge()), stu1); //将stu1的年龄作为键,stu1作为值存入treeMap

然后 collection iterator 输出就好啦~