# Collection

1\. List 实现类：ArrayList、Vector、LinkedList 2. Set 实现类：HashSet、TreeSet

## List

实现类：ArrayList、Vector、LinkedList

### ArrayList

Arraylist：底层是基于`动态数组`，根据下表随机访问数组元素的效率高，向数组尾部添加元素的效率高；但是，删除数组中的数据以及向数组中间`添加数据效率低`，因为`需要移动数组`.

```java
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class InteratoeDemo {
    public static void main(String[] args) {

        //Collection集合的遍历
        Collection c=new ArrayList();
        c.add("zfliu");
        c.add("18");
        c.add("java");

        Iterator i=c.iterator();

        while(i.hasNext()) {
            //向下转型
            String s=(String) i.next();
            System.out.println(s);
        }
        System.out.println("-----------------");
        //List集合的遍历
        List l=new ArrayList();

        l.add(0,"zfliu");
        l.add(1,"18");
        l.add(1,"java");

        ListIterator li=l.listIterator();

        //后向遍历
        while(li.hasNext()) {
            String s=(String)li.next();
            System.out.println(s);
        }
        System.out.println("-----------------");

        //前向遍历
        while(li.hasPrevious()) {
            String s=(String)li.previous();
            System.out.println(s);
        }
        System.out.println("-----------------");

        //get方法遍历
        for(int x=0;x<l.size();x++) {
            String s=(String)l.get(x);
            System.out.println(s);

        }

    }
}
```

### Vector

Vector 类实现了一个动态数组。

a) 添加功能 i. public void addElement(Object obj) b) 获取功能 i. public Object elementAt(int index) ii. public Enumeration elements ()

2\. boolean hasMoreElements() 2. Object nextElement()

<https://www.runoob.com/java/java-vector-class.html>

```java
import java.util.Vector;

Vector<String> hs = new Vector<String>();
hs.add("aa");
hs.add("bb");
hs.add("aa");
hs.add("cc");
```

### LinkedList

Linkedlist基于链表的动态数组，数据添加删除效率高，只需要改变指针指向即可，但是访问数据的平均效率低，需要对链表进行遍历。

LinkedList集合的特有功能 a) 添加功能 i. public void addFirst(Object e) ii. public void addLast(Object e) b) 获取功能 i. public Object getFirst() ii. public Object getLast() c) 删除功能 i. public Object removeFirst() ii. public Object removeLast()

```java
import java.util.*;

public class Test
{
    public static void main(String args[])
    {
        LinkedList<String> object = new LinkedList<String>();
        object.add("A");
        object.add("B");
        object.addLast("C");
        object.addFirst("D");
        object.add(2, "E");
        object.add("F");
        object.add("G");
        System.out.println("Linked list : " + object);

        object.remove("B");
        object.remove(3);
        object.removeFirst();
        object.removeLast();
        System.out.println("Linked list after deletion: " + object);

        boolean status = object.contains("E");

        if(status)
            System.out.println("List contains the element 'E' ");
        else
            System.out.println("List doesn't contain the element 'E'");

        int size = object.size();
        System.out.println("Size of linked list = " + size);

        Object element = object.get(2);
        System.out.println("Element returned by get() : " + element);
        object.set(2, "Y");
        System.out.println("Linked list after change : " + object);
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://im-qianuxn.gitbook.io/pytorch/ji-suan-ji/java/ji-he-lei/collection.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
