List集合
List集合特点
有序:存储和取出的元素顺序一致;有索引∶可以通过索引操作元素 ;可重复∶存储的元素可以重复
List集合的特有方法
list.add(0,"qqq"); //原来位置上的元素会往后挪一个索引
System.out.println(list);
// 在list中有两个删除的方法,一个是删除指定元素(但是只删除第一次出线)返回是否删除成功,一个是删除指定索引返回删除的值
String s = list.remove(0);
System.out.println(s);
System.out.println(list);
// 替换指定索引位置的值,并把被替换的值返回
String s1 = list.set(0,"qqq");
System.out.println(s1);
System.out.println(list);
// get获取指定索引位置元素
String s2 = list.get(0);
System.out.println(s2);
LinkedList
LinkerList的特有功能
LinkedList<String> list = new LinkedList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.addFirst("qqq");
System.out.println(list);
list.addLast("www");
System.out.println(list);
String first = list.getFirst();
String last = list.getLast();
System.out.println(first+last);
String s = list.removeFirst();
String s1 = list.removeLast();
System.out.println(s+s1);
System.out.println(list);
Set集合
Set集合的概述和特点
可以去除重复
存取顺序不一致
没有带索引方法,所以不能使用普通for进行遍历,也不能通过索引来获取或者删除集合中的元素
TreeSet集合概述和特点
除了继承Set的特点之外,还可以按照规则对元素进行排序
public static void main(String[] args) {
TreeSet<Integer> ts = new TreeSet<>();
ts.add(5);
ts.add(4);
ts.add(3);
ts.add(2);
ts.add(1);
System.out.println(ts);
}
输出:
所以如果TreeSet的泛型装的是自定义类型,那么我们要在自定义类型里指定排序规则,也就引入了以下排序方式
自然排序和比较器排序
自然排序
所以首先在自定义类中实现comparable接口,并在接口的泛型中指定所使用的数据类型
然后在其中重写CompareTO方法
o.this表示依次遍历已经存进去的数
如果自定义对象类中有多个元素,要考虑两个元素的排序,例如:
这里面this.name后跟着的compareTO是String方法里的方法
比较器排序
也就是在TreeSet构造时传递Comparator的实现类对象,重写compare方法。
两种比较方式小结:
如果比如说要使用String字符串的排序方式,但是String类中已经实现了Compare方法,我们不能直接在String类中修改比较方法的时候 我们就要用比较器排序方法,在创建TreeSet对象 的时候,从写compare方法