ArrayList数组是一个泛型数组,在定义的时候需要传入存储数据的类型。
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
System.out.println("创建的ArrayList集合初始的大小是"+arrayList.size());
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
int arrayLength = arrayList.size();
System.out.println("创建的ArrayList集合,并添加数据之后的大小是"+arrayLength);
for(int i = 0;i<arrayLength;i++){
System.out.println("添加的第" +(i+1) +"条数据是"+arrayList.get(i));
}
}
对于初学者来说,可以把上边我定义的arrayList看作为String [] arrayList = new String[]; 只不过ArrayList不需要你去传入数组是多大,因为ArrayList数组是动态扩充的,具体是怎么扩充的这篇文章先不做解释。
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
arrayList.add(0,"喜羊羊");
int arrayLength = arrayList.size();
for(int i = 0;i<arrayLength;i++){
System.out.println("添加的第" +(i+1) +"条数据是"+arrayList.get(i));
}
}
如上图所示,我在arayList中的0号位置添加了一条数据,那么原本在第一条的张三的位置就会被喜羊羊代替,张三和后边的数据都向后移。这也容易理解,在一次体育课上,张三、李四和王五是跑步的前三名,老师将他们的姓名和名字记录在自己的表格当中,张三——第一名,李四——第二名,王五——第三名。现在喜羊羊觉得不服,他要重新挑战前三名,并且成功挑战获得比张三更好的成绩。老师无奈下只能将表格修改为喜羊羊——第一名,张三——第二名,以此类推。
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
arrayList.set(0,"喜羊羊");
int arrayLength = arrayList.size();
for(int i = 0;i<arrayLength;i++){
System.out.println("添加的第" +(i+1) +"条数据是"+arrayList.get(i));
}
}
这一次也不难理解,体育老师在登机成绩的时候,觉得第一名眼熟,仔细一想叫做张三,于是将张三定为了第一名。实际的第一名一看排名表发现自己不在排行榜上,于是找到了老师,老师说:“张三,你不是第一名吗,怎么说没有你?”解释了一下老师才发现自己想错名字了,第一名不叫张三,他叫喜羊羊,于是老师只能将榜单的第一名修改为喜羊羊。
注意:set方法的index坐标不能超过ArrayList集合当前的长度-1 否则的话会这样,
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
System.out.println(arrayList.isEmpty());
// false
arrayList.clear();
System.out.println(arrayList.isEmpty());
//true
}
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
boolean res = arrayList.contains("张三");
//true
boolean res2 = arrayList.contains("喜羊羊");
//false
System.out.println("是否存在张三:"+res);
System.out.println("是否存在喜羊羊:"+res2);
}
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
System.out.println("将张三删除");
arrayList.remove(0);
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
}
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("张三");
arrayList.add("李四");
arrayList.add("王五");
System.out.println("再次添加张三");
arrayList.add("张三");
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
System.out.println("删除张三");
arrayList.remove("张三");
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
}
public static void main(String[] args) {
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
linkedList.addFirst(4);
linkedList.addFirst(5);
linkedList.addLast(6);
System.out.println(linkedList);
}
实现过程
first和last指向的就是链表中的第一个位置和最后一个位置。我们可以看到addFirst的过程和first的重新指向。
Object get(int index) 根据下标获取数据
Object getFirst() 它返回链表的第一个元素。
Object getLast() 它返回链接列表的最后一个元素。
public static void main(String[] args) {
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
System.out.println(linkedList.get(1));
System.out.println(linkedList.getFirst());
System.out.println(linkedList.getLast());
}
E remove() 删除第一个元素
E remove(int location) 删除指定位置的元素
E removeFirst() 删除并返回链接列表的头部一个元素
E removeLast() 删除并返回链接列表的尾部一个元素
代码不再展示。
boolean contains(Object element)如果元素存在于列表中,则返回true。
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
linkedList.add(1);
System.out.println("是否出现过元素1:"+linkedList.contains(1));
//是否出现过元素1:true
System.out.println("是否出现过元素4:"+linkedList.contains(4));
//是否出现过元素4:false
Object set(int index,Object element)它用于用新元素替换列表中的现有元素
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
linkedList.add(1);
linkedList.set(1,9);
System.out.println("更新过的链表:"+linkedList);
//更新过的链表:[1, 9, 3, 1]
其他的内容不再展示了。