无声specialweek

从零开始学Java-Day15

Collection

package cn.tedu.collection;

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

//本类用于测试collection相关API
public class TestCollection {
    public static void main(String[] args) {
        /*
        <?>泛型中的类型只能是引用类型,不能是基本类型
         */
        Collection<String> c = new ArrayList<String>();
        c.add("黄金船");
        c.add("小栗帽");
        c.add("目白麦昆");
        c.add("玉藻十字");
        System.out.println(c);
//        c.clear();
//        System.out.println(c);
        System.out.println(c.contains("黄金船"));//判断集合中是否存在此元素
        System.out.println(c.isEmpty());//判断集合是否为空
        System.out.println(c.hashCode());//获取集合的哈希码值
        System.out.println(c.remove("目白麦昆"));//移除首次出现的该元素,删除成功返回true
        System.out.println(c.size());//获取当前集合元素的个数
        System.out.println(c.equals("小栗帽"));
        Object[] array = c.toArray();
        System.out.println(Arrays.toString(array));
        System.out.println("========================");
        Collection<String> c2 = new ArrayList();
        c2.add("特别周");
        c2.add("无声铃鹿");
        c2.add("大和赤骥");
        c.addAll(c2);
        System.out.println(c);
        System.out.println(c.containsAll(c2));//判断c集合中是否含有才中的所有元素
        System.out.println(c.retainAll(c2));//取c与c2的交集
        System.out.println(c);
        /*
        1.获取集合对应的迭代器 c.iterator()
        2.判断当前是否有下个元素 it.hasNext()
        3.获取当前迭代到的元素
         */
        Iterator<String> it = c.iterator();
        while (it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }

    }

}

List

有序的collection(也称为序列).此接口的用户可以对列表中的每个元素的插入位置进行精确的控制,用户可以根据元素的整数索引(在列表中的位置)来访问元素,并搜索列表中的元素.

  1. 元素都有下标
  2. 数据是有序的
  3. 允许存放重复的元素
package cn.tedu.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

//本类用于测试List接口
public class TestList {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("白雪");
        list.add("智世");
        list.add("尤娜");
        list.add("漩涡玖辛奈");
        list.add("夏娜");
        list.add("牧濑红莉栖");
        System.out.println("神乐");
        System.out.println(list.contains("朽木露琪亚"));
        System.out.println(list.hashCode());
        System.out.println(list.remove("神乐"));
        System.out.println(Arrays.toString(list.toArray()));
        System.out.println(list.lastIndexOf("白雪"));
        System.out.println("=========================");
        list.add("神乐");
        System.out.println(list);
        list.add(0,"丸善斯基");
        System.out.println(list);
        System.out.println(list.get(5));
        list.add(3,"尤娜");
        System.out.println(list.indexOf("尤娜"));//显示第一次出现该元素的下标
        System.out.println(list.lastIndexOf("尤娜"));//显示最后一次出现该元素的下标
        System.out.println(list.remove(3));//根据下标删除元素
        System.out.println(list.set(5,"五河琴里"));
        System.out.println(list);
        List<String> sublist = list.subList(2,6);
        System.out.println(sublist);
        System.out.println("=========================");

        List<String> list2 = new ArrayList<String>();

        list2.add("艾利斯");
        list2.add("苏白");
        list2.add("波风水门");
        list2.add("五河士道");
        System.out.println(list2);
        System.out.println(sublist.addAll(list2));
        System.out.println(sublist);
        System.out.println(sublist.addAll(0,list2));
        System.out.println(sublist);
        System.out.println(sublist.removeAll(list2));//移除所有list2中的元素
        System.out.println(sublist);

    }
}
package cn.tedu.collection;

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

//进一步测试List接口
public class TestList02 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("米子哈");
        list.add("黑沼爽子");
        list.add("宫园熏");
        list.add("玉子");
        list.add("高木");
        list.add("保橙心爱");
//        Iterator<String> it = list.iterator();
//        while (it.hasNext()){
//            String s = it.next();
//            System.out.print(s + " ");
//        }
//        for (String s : list) {
//            System.out.print(s + " ");
//        }
        /*
        ListIterator 是 Iterator 的子接口,拥有你想遍历的特有功能2

         */
        ListIterator<String> it2 = list.listIterator();
        while (it2.hasNext()){
            String s = it2.next();
            System.out.print(s + " ");
        }
    }
}
ArrayList

是一个集合,底层维护的是数组结构

大数据下

查询快,增删慢

package cn.tedu.collection;

import java.lang.reflect.Array;
import java.util.*;

//苯类用于List接口的子类ArrayList的测试
public class TestArrayList {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(100);
        list.add(200);
        list.add(300);
        list.add(400);
        list.add(200);
        System.out.println(list.contains(100));
        System.out.println(list.indexOf(200));
        System.out.println(list.lastIndexOf(200));
        System.out.println(list.get(0));
        System.out.println(list.remove(1));
        System.out.println(list.remove(Integer.valueOf(300)));
        System.out.println(list);
        System.out.println(Arrays.toString(list.toArray()));

        for (int i = 0; i < list.size(); i++){
            System.out.print(list.get(i) + " ");
        }
        System.out.println("==============");
        for (Integer i : list){
            System.out.print(i + " ");
        }
        System.out.println("==============");

        Iterator<Integer> it = list.iterator();
        while (it.hasNext()){
            Integer integer = it.next();
            System.out.print(integer + " ");
        }
        System.out.println("==============");
        ListIterator<Integer> it2 = list.listIterator();
        while (it.hasNext()){
            Integer integer = it.next();
            System.out.print(integer + " ");
        }
    }
}
LinkedList

是一个集合,底层维护的是链表结构

大数据下

查询慢,增删快

package cn.tedu.collection;

import java.util.LinkedList;

//本类用测试LinkedList
public class TestLinkedList {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("玉子烧");
        list.add("章鱼");
        list.add("章鱼丸子");
        list.add("炸鸡");
        list.add("酸萝卜");
        list.add("味增汤");
        System.out.println(list);
        list.addFirst("米饭");
        list.addLast("天妇罗");
        System.out.println(list);
        System.out.println(list.removeFirst());
        System.out.println(list.removeLast());
        System.out.println(list);

        LinkedList<String> list1 = new LinkedList<>();
        list1.add("从零开始的异世界生活");
        list1.add("从零开始");
        list1.add("精灵使的剑舞");
        list1.add("转生成蜘蛛");
        list1.add("轻音少女");
        System.out.println(list1);
        //查询
        System.out.println(list1.peek());//获取首元素
        System.out.println(list1.peekFirst());
        System.out.println(list1.peekLast());
        System.out.println(list1);
        //添加
        System.out.println(list1.offer("龙族"));//在末尾添加元素
        System.out.println(list1.offerFirst("我被绑架到贵族学院"));//在最前面加入元素
        System.out.println(list1.offerLast("刀剑神域"));
        System.out.println(list1);
        //删除
        System.out.println(list1.poll());//删除首元素,返回该元素
        System.out.println(list1.pollFirst());
        System.out.println(list1.pollLast());
        System.out.println(list1);

    }
}

Set

  1. 是一个不包含重复结构的Collection
  2. 集合内的数据是无序的
  3. 因为元素不可重复可以用来去重
package cn.tedu.collection;

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

//苯类用于测试Set接口
public class TestSet {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("call me king");
        set.add("EX");
        System.out.println(set);
        /*
        1.set集合中元素是无序的
        2.set集合中元素不可重复
        3.set集合洞中可以存放null值 0-1个
         */
        set.add("null");
        set.add(null);
        System.out.println(set);

        //set.clear();
        System.out.println(set.contains("EX"));
        System.out.println(set.hashCode());
        System.out.println(set.isEmpty());
        System.out.println(set.remove(null));
        System.out.println(set.size());
        System.out.println(Arrays.toString(set.toArray()));
        Set<String> set2 = new HashSet<>();
        set2.add("fire");
        set2.add("water");
        set2.add("wood");
        System.out.println(set.addAll(set2));
        System.out.println(set);
        //谁调用改变谁
        System.out.println(set.containsAll(set2));
        System.out.println(set.retainAll(set2));
        System.out.println(set);
        Iterator<String> it = set.iterator();
        while (it.hasNext()){
            String s = it.next();
            System.out.print(s + " ");
        }




    }
}

Map

  1. 可以根据key获取对应的value
  2. key不允许重复,如果重复对应的value会被覆盖
  3. 无序
  4. 初始容量16,默认加载因子0.75

HashMap

数组加链表

package cn.tedu.collection;

import java.util.*;

//本类用于测试Map接口
public class TestMap {
    public static void main(String[] args) {
        //Map中的数据要符合映射规则,一定要同时指定KV的类型
        Map<Integer,String> map = new HashMap<>();
        map.put(12,"高木同学");
        map.put(34,"西片");
        map.put(46,"小千");
        System.out.println(map);
        /*
        1.Map中存放的数据都是无序的
        2.key值不能重复
        3.如果重复此key对应的value会被覆盖
         */
        System.out.println(map.containsKey(12));
        System.out.println(map.containsValue("沙希同学"));
        System.out.println(map.get(12));
        System.out.println(map.remove(46));
        System.out.println(map.size());
        System.out.println(map.hashCode());
        Collection<String> values = map.values();
        System.out.println(values);
        map.put(46,"小千");
        System.out.println(map);
        System.out.println(map.entrySet());

    }
}

posted on 2021-06-21 19:47  无声specialweek  阅读(54)  评论(0)    收藏  举报

导航