Collection的集合体系 List、Set接口 及其实现类

  /*
    List接口是Collection下面的一个子接口。

    List接口有以下特点:
1. 有序(有序不是顺序, 怎么存就怎么取) 2. 有索引。 3. 可以存放重复元素。

   list接口下面常见的实现类。 ArrayListLinkedList
*/
 
 
public class Demo01list {
       public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        //添加元素
        list.add("达芬奇");
        list.add("三十奇");
        list.add("六合奇");
        System.out.println(list);//怎么输入的怎么输出吗,证明有序性
        list.add("达芬奇");//证明可重复性
        System.out.println(list);
        list.get(3);//有索引
    }
}
//        List 接口中的方法:
//        public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
//    (最常用)public E get(int index) :返回集合中指定位置的元素。
//        public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
//        public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素
//                */
//        public class demo01_list.Demo02ListMethod {
//            public static void main(String[] args) {
//                method4();
//            }
//
//            //public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素
//            //参数index: 表示要替换这个位置的元素
//            //参数element: 表示使用这个元素进行替换
//            //返回值: 是被替换掉的元素。
public class Demo02ListMethod {
    public static void main(String[] args) {


        List<String> list = new ArrayList<>();
        list.add("大米米");
        list.add("小米米");
        list.add("非洲米米");
        System.out.println(list);
        method(list);
    }

    public static void method(List<String> list) {
        list.add(3, "wowowow");
        System.out.println(list);
        String s = list.get(3);
        System.out.println(s);
        String r = list.remove(2);
        System.out.println(r);
        String n = list.set(2, "非洲大米");
        System.out.println(list);
        System.out.println(n);


    }
}
/*
    ArrayList List接口的一个实现类。
      内部是一个数组

    因为是一个数组, 所以查询快,增删慢。
 */
/*
    LinkedListList接口的另一个实现类。
内部是一个双向链表。
    特点: 查询慢,增删快。
*/
LinkedList中有很多独有的方法,用于对集合的首尾进行操作。

   void addFirst​(E e): 向集合首个位置添加元素
   void addLast​(E e): 向集合的尾部添加元素
   E getFirst​(): 获取首个元素
   E getLast​(): 获取尾部元素
   E removeFirst​(): 删除首个元素,并且返回被删除的元素。
   E removeLast​(): 删除尾部元素,并且返回被删除的元素
   void push​(E e):压入。 在首个位置添加元素
   E pop​():弹出,删除第一个元素
*/
public class LinkedListMethod {
    

    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("A");
        list.add("b");
        list.add("c");
        list.addFirst(",");
        list.addLast("nn");
        System.out.println(list);//,abcnn
        String s = list.removeFirst();
        System.out.println(s);//,
        String s1 = list.removeLast();
        System.out.println(s1);//nn
        System.out.println(list);//Abc
        list.push("w");
        System.out.println(list);//wAbc
        String pop = list.pop();
        System.out.println(pop);//w


    }
}
/*
   Set Collection下面的另一个子接口。
   这个接口有以下的特点:
       1. 无序 (存的顺序和取的顺序不一样)
       2. 没有索引 (不能根据索引获取元素)
       3. 不能存放重复元素。

   Set接口常见的实现类:
       HashSet(最常用) LinkedHashSet
*/
public class Demo01Set {

    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("冰冰");
        set.add("咪咪");
        set.add("美美");
        set.add("么么");
        System.out.println(set);//证明是无序的
//        set.get();//没有索引编译错误
        //不能存放重复元素
        set.add("么么");
        set.add("没有两个么么吧");
        System.out.println(set);
    }
}
/*
        HashSetSet接口下面最常用的实现类。
        满足Set接口的所有特点:
        1. 无序
        2. 无索引
        3. 不可重复

HashSet这个集合进行遍历
        遍历方式:
        1. 迭代器
        2. 增强for
        */
public class Demo02HashSet {
    public static void main(String[] args) {
        HashSet<String> hs = new HashSet<>();
        hs.add("13");
        hs.add("222");
        hs.add("32222");
        hs.add("422");
        System.out.println(hs);
        //用迭代器对集合进行遍历
        Iterator<String> iterator = hs.iterator();//获取该集合的迭代器
        while (iterator.hasNext()) {
            String s = iterator.next();//获取当前位置元素,光标后移
            System.out.print(" " + s + " ");
        }
        System.out.println();
        for (String t : hs) {
            System.out.print("" + t + " ");
        }


    }

}
/* LinkedHashSet Set下面的另一个实现类。
  内部除了有一个哈希表之外,还有一个链表,这个链表的作用是保证有序。
  LinkedHashSet是有序的。
 Set接口是无序,但是他不能保证所有的实现类都无序。
*/
public class Demo05LinkedHashSet {
    public static void main(String[] args) {
        Set<String> set = new LinkedHashSet<>();//创建集合
        set.add("李白");
        set.add("丽丽");
        set.add("小白");
        set.add("太白");
        set.add("很白");
        System.out.println(set);//有序的
        for (String s : set) {
            System.out.println(s);

        }

猜你喜欢

转载自blog.csdn.net/qq_28761767/article/details/80956528