【从零开始学Java笔记】ArrayList类、Collection类和List类

大家可以关注作者的账号,关注从零开始学Java笔记文集。也可以根据目录前往作者的博客园博客进行学习。本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法。欢迎大家一起学习和讨论。

【从零开始学Java笔记】目录

集合的体系结构

由于不同的数据结构(数据的组织,存储方式),所以Java为我们提供了不同的集合,但是不同的集合他们的功能都是相似,不断怕向上提取,将共性抽取出来,这就是集合体系结构形成的原因

体系结构:
怎么学习?最顶层开始学习,因为最项层包含了所有的共性
怎么使用?使用最底层,因为最底层就是具体的实现

Collection -> List -> ArrayList

Collection类

Collection类的常用功能

  • boolean add(E e)
    void clear()
    boolean contains(Object o)
    boolean isEmpty()
    boolean remove(Object o)
    int size()
    Object[] toArray()
import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo {
	public static void main(String[] args) {		
		//创建集合对象
		//Collection c = new Collection();//Collection是接口,不能实例化
		Collection c = new ArrayList();//多态,父类引用指向子类对象  
		
		//boolean add(E e)  
		System.out.println(c.add("hello"));//永远可以添加成功,因为ArrayList他允许重复
		System.out.println(c.add("world"));
		
		//void clear():清空集合
		//c.clear();
		
		//boolean contains(Object o)  :判断集合中是否包含指定元素
		//System.out.println(c.contains("java"));
		
		//boolean isEmpty() :是否为空
		//System.out.println(c.isEmpty());
		
		
		//boolean remove(Object o) :删除元素
		//System.out.println(c.remove("java"));
		
		//int size() :返回集合中的元素个数
		//System.out.println(c.size());
		
		//Object[] toArray()  :将集合转换成一个Object类型的数组
		Object[] objs = c.toArray();
		for (int i = 0; i < objs.length; i++) {
			System.out.println(objs[i]);
		}
		
		
		
		System.out.println(c);
	}
}

集合的遍历方式

1.toArray(),可以把集合转换成数组,然后遍历数组即可
2.iterator(),可以返回一个迭代器对象,我们可以通过迭代器对象来迭代集合
3.foreach方法
4.不能用for循环,因为Collection类没有索引,但是Colletion的子类可以,因为他们有索引

Iterator:可以用于遍历集合

  • E next() :返回下一个元素

    注意:Exception in thread "main" java.util.NoSuchElementException使用next方法获取下一个元素,如果没有元素可以获取,则出现NoSuchElementException

  • boolean hasNext() :判断是否有元素可以获取


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;


public class InterationDemo {
	public static void main(String[] args) {
//		method();
//		method1();
	}

	private static void method1() {
		//创建集合对象
		Collection c = new ArrayList();
		//添加元素
		c.add("hello");
		c.add("world");
		c.add("java");
		
		//获取迭代器对象
		Iterator it = c.iterator();
		
		//Object next()  :返回下一个元素
		//boolean hasNext()  :判断是否有元素可以获取
				
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}

	private static void method() {
		//创建集合对象
		Collection c = new ArrayList();
		//添加元素
		c.add("hello");
		c.add("world");
		c.add("java");
		//获取数组
		Object[] objs = c.toArray();
		//遍历数组
		for (int i = 0; i < objs.length; i++) {
			System.out.println(objs[i]);
		}
	}
}

List类

List的特点

  • 有序的(存储和读取的顺序是一致的)
    有整数索引
    允许重复的

List的特有功能(增删改查)

  • void add(int index, E element)
    E get(int index)
    E remove(int index)
    E set(int index, E element)
import java.util.ArrayList;
import java.util.List;


public class ListDemo {
	public static void main(String[] args) {
		//创建的列表对象
		List list = new ArrayList();
		
		//void add(int index, E element)  : 在指定索引位置添加指定元素
		list.add(0, "hello");
		list.add(0, "world");
		list.add(1, "java");
		
		//E get(int index)  :根据索引返回元素
		//遍历		
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		System.out.println("-----------------");
		//E remove(int index)  : 删除指定元素并返回	
		System.out.println(list.remove(2));
		System.out.println("-----------------");
		//E set(int index, E element) : 将指定索引位置的元素替换为指定元素,并将原先的元素返回
		System.out.println(list.set(0, "android"));
		
		System.out.println(list);
	}
}
输出结果
world
java
hello
-----------------
hello
-----------------
world
[android, java]

List的子类

List的常用子类:
ArrayList:底层是数组结构,查询快,增删慢
L inkedList:底层结构是链表,查询慢,增删快

如何选择使用不同的集合?
如果查询多,增删少,则使用ArrayList
如果查询少,增删多,则使用LinkedList

LinkedList的特有功能

  • void addFirst(E e)
    void addLast(E e)
    E getFirst()
    E getLast()
    E removeFirst()
    E removeLast()
public class LinkedListDemo {
	public static void main(String[] args) {
		LinkedList list = new LinkedList();
		list.add("hello");
		list.add("world");
		System.out.println(list);
		System.out.println("-----------------");
		
		// void addFirst(E e) :将元素添加到索引为0的位置
		// void addLast(E e) :将元素添加到索引为size()-1的位置
		list.addFirst("java");
		list.addLast("android");
		System.out.println(list);
		System.out.println("-----------------");
		
		// E getFirst() :获取索引为0的元素
		// E getLast() :获取索引为size()-1的元素
		System.out.println(list.getFirst());
		System.out.println(list.getLast());
		System.out.println("-----------------");
		
		// E removeFirst() :删除索引为0的元素并返回
		// E removeLast() :删除索引为size()-1的元素并返回
		System.out.println(list.removeFirst());
		System.out.println(list.removeLast());
		System.out.println(list);
		System.out.println("-----------------");
	}
}
输出结果
[hello, world]
-----------------
[java, hello, world, android]
-----------------
java
android
-----------------
java
android
[hello, world]
-----------------

ArrayList类

集合类的特点:长度可变

ArrayList:大小可变数组的实现,:是一种特殊的数据类型,泛型。在出现E的地方我们使用引用数据类型替换即可,例如: ArrayL ist , ArrayL ist

构造方法

ArrayList<String> array = new ArrayL ist<String>();

成员方法

添加元素
public boolean add(E e) :添加元素
public void add(int index,E element) :在指定的索引处添加一个元素
获取元素
public E get(int index) :返回指定索引处的元素
集合长度
public int size( ):返回集合中的元素的个数
删除元素
public boolean remove(0bject o) :册余指定的元素,返回删除是否成功
public E remove(int index) :删除指定索引处的元素,返回被删除的元素
修改元素
public E set(int index,E element ) :修改指定索引处的元素,返回被修改的元素

这里简单举个例子,就是老生常谈的学生管理系统。但是由于篇幅较长,就不在这里写了,具体请在相应章节博客寻找。

posted @ 2020-04-07 23:02  朱李洛克  阅读(369)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css