java集合类

List类

可重复元素,按顺序输出,有索引因此要注意不能索引越界

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class LIST {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("a");
        System.out.println(list);
        // 添加
        list.add(2,"kk");
        System.out.println(list);

        //删除
        list.remove(2);
        System.out.println(list);

        //替换
        list.set(2,"kkk");
        System.out.println(list);


        //循环3种写法
        for(int i=0;i<list.size();i++){
            String s=list.get(i);
            System.out.println(s);
        }

        System.out.println("---------------");
        Iterator<String> it=list.iterator();
        while(it.hasNext()){
            String s=it.next();
            System.out.println(s);
        }

        System.out.println("---------------");
        for(String s : list){
            System.out.println(s);
        }
    }
}

Arraylist

ArrayList 是一个数组队列,相当动态数组
和Vector不同,ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList。

简单来说是链表结构,适合添加,删除操作

import java.util.LinkedList;

public class LinkList {
    public static void main(String[] args) {
        show01();
        System.out.println();
    }

    private static void show01() {
        /*void addFirst(E e)
        = push(E e)
        在该列表开头插入指定的元素。
        void addLast(E e)
        = add(E e)
        将指定的元素追加到此列表的末尾。
*/
        LinkedList<String> link = new LinkedList<>();
        link.add("a");
        link.add("b");
        System.out.println(link);
        link.addFirst("kk");
        System.out.println(link);
        /*
        * E get(int index)
        返回此列表中指定位置的元素。
        E getFirst()
        返回此列表中的第一个元素。
        E getLast()
        返回此列表中的最后一个元素。
        */
        /*E removeFirst()
        从此列表中删除并返回第一个元素。
        =pop()
        E removeLast()
        从此列表中删除并返回最后一个元素。
        remove(int index)
        删除该列表中指定位置的元素。
        */
        System.out.println(link.removeFirst());
        System.out.println(link.removeLast());
        System.out.println(link);
        link.add("b");
        link.add("c");
        System.out.println(link);
        link.remove(2);
        System.out.println(link);
    }
}

vector

几乎与Arreylist一样,区别在于它是同步的。

Hashset

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Demoset {
    /*Set
    * 特点:无重复元素
    * 没有索引,不能使用普通的for循环*/

    /*Hashset
    * 特点:无重复元素
    * 没有索引,不能使用普通的for循环
    * 是一个无序的集合
    * 查询速度非常快*/
    public static void main(String[] args) {
        Set<Integer>set=new HashSet<>();
        set.add(1);set.add(2);set.add(3);
        set.add(1);set.add(-1);
        Iterator<Integer>it=set.iterator();
        while(it.hasNext()){
            Integer a=it.next();
            System.out.println(a);
        }
        System.out.println("---------");
        for(Integer i : set){
            System.out.println(i);
        }
    }
}

LinkedHashSet

底层是一个哈希表加链表,记住其和Hashset不一样的一个性质是它是有序的

posted @ 2020-11-21 23:41  一个经常掉线的人  阅读(70)  评论(0)    收藏  举报