ArrayList和LinkedList 用法
ArrayList (数组列表) | LinkedLIst(双向链表) |
---|---|
add() 旧值向后移 | add() 链接关系改变 |
remove() | remove() |
size() | size() |
indexOf() 获取索引值 | indexOf() |
contains() 判断元素是否存在 | contains() |
set() 覆盖旧值 | set() |
clear() | clear() |
– | addFirst() 添加到开头 |
– | addLast() 添加到末尾 |
– | peekFirst() 返回第一个元素 |
– | peekLast() 返回最后一个元素 |
toArray() 转化为数组 | toArray() |
代码展示:
public class Cat {
private String name;
public Cat(String name) {
this.name = name;
}
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
'}';
}
public static void main(String[] args) {
//ArrayList用法
ArrayList<Cat> cats = new ArrayList<>();
Cat cat1 = new Cat("小白");
Cat cat2 = new Cat("小虎");
Cat cat3 = new Cat("小花");
Cat cat4 = new Cat ("橙哥");
cats.add(cat1); //添加
cats.add(cat2);
cats.add(cat3);
// cats.add(cat4);
cats.add(2,cat4); //引用索引,所用索引及后面元素向后移
System.out.println(cats);
}
结果:
[Cat{name='小白'}, Cat{name='小虎'}, Cat{name='橙哥'}, Cat{name='小花'}]
Cat[] cats2=cats.toArray(new Cat[2]); //转换为数组,
//Cat大小为2,空间不够,*1.5+1,就是4
System.out.println(Arrays.toString(cats2)); //输出
结果:
[Cat{name='小白'}, Cat{name='小虎'}, Cat{name='橙哥'}, Cat{name='小花'}]
System.out.println(cats);
cats.remove(1); //用索引删除
cats.remove(cat3); //用数组内元素名删除
System.out.println(cats);
结果:
[Cat{name='小白'}, Cat{name='小虎'}, Cat{name='橙哥'}, Cat{name='小花'}]
[Cat{name='小白'}, Cat{name='橙哥'}]
System.out.println(cats.indexOf(cat2)); //获取索引值
System.out.println(cats.get(1)); //通过索引获取元素
结果:
1
Cat{name='小虎'}
for (Cat cats3:
cats) {
System.out.println(cats3.toString()); //foreach
}
for (int i = 0; i <cats.size(); i++) { //size()大小
System.out.println(cats.get(i)); //fori
}
System.out.println(cats.contains(cat3)); //检验是否存在,true false
cats.remove(cat3); //用数组内元素名删除
System.out.println(cats.contains(cat3));
结果:
true
false
System.out.println(cats);
cats.set(1,cat3); //更改值,更add()相比,覆盖值
System.out.println(cats);
结果:
[Cat{name='小白'}, Cat{name='小虎'}, Cat{name='橙哥'}, Cat{name='小花'}]
[Cat{name='小白'}, Cat{name='小花'}, Cat{name='橙哥'}, Cat{name='小花'}]
System.out.println(cats);
cats.clear(); //清空列表
System.out.println(cats);
结果:
[Cat{name='小白'}, Cat{name='小虎'}, Cat{name='橙哥'}, Cat{name='小花'}]
[]
LinkedList前几项用法跟ArrrayLIst相同,add(),remove()等原理不同
linkedList()的addFirst(),addLast(),peekFirst(),peekLast()
LinkedList<Cat> cats1 = new LinkedList<>();
cats1.add(cat1); //添加
cats1.add(cat2);
cats1.add(cat3);
cats1.add(cat4);
System.out.println(cats1);
cats1.addFirst(cat2); //添加到开头
System.out.println(cats1);
cats1.addLast(cat3); //添加到结尾
System.out.println(cats1);
System.out.println(cats1.peekFirst()); //返回第一个元素
System.out.println(cats1.peekLast()); //返回最后一个元素
结果:
[Cat{name='小白'}, Cat{name='小虎'}, Cat{name='小花'}, Cat{name='橙哥'}]
[Cat{name='小虎'}, Cat{name='小白'}, Cat{name='小虎'}, Cat{name='小花'}, Cat{name='橙哥'}]
[Cat{name='小虎'}, Cat{name='小白'}, Cat{name='小虎'}, Cat{name='小花'}, Cat{name='橙哥'}, Cat{name='小花'}]
Cat{name='小虎'}
Cat{name='小花'}