Java中的集合

 继承于Collection体系的单列集合

 List系列集合:添加的元素是有序、可重复、有索引 

Set系列集合:添加的元素是无序、不可重复、无索引

1.调用 Collection接口 

public class CollectionTest {
    public static void main(String[] args) {
        /*
        调用 Collection接口
         */
        Collection<String> coll = new ArrayList<>();
        coll.add("张三");
        coll.add("李四");
        coll.add("王五");
        coll.add("赵六");
        coll.add("杨七");
        System.out.println(coll);
        coll.remove("赵六");
        System.out.println(coll);
        coll.clear();
        System.out.println(coll);
        System.out.println("*********************************************************");
        /*
        创建集合的对象
         */
        Collection<Student> coll1 = new ArrayList<>();
        Student s1=new Student("孙悟空",15);
        Student s2=new Student("猪八戒",20);
        Student s3=new Student("沙和尚",38);
        Student s4=new Student("唐僧",50);
        coll1.add(s1);
        coll1.add(s2);
        coll1.add(s3);
        coll1.add(s4);
        for (Student student : coll1) {
            System.out.println(student.getName());
            System.out.println(student.getAge());
        }
        /*
        [张三, 李四, 王五, 赵六, 杨七]
        [张三, 李四, 王五, 杨七]
        []
        *********************************************************
        孙悟空
        15
        猪八戒
        20
        沙和尚
        38
        唐僧
        50
        * */
    }
}

 2. List集合的构造,

public class ListTest2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        list.add("杨七");
        list.add("杨七");
        list.add("杨七");
        System.out.println(list);
        System.out.println(list.get(1)); //可获取索引处的值
        LinkedList<Integer> list1 = new LinkedList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        System.out.println(list1);
        /*运行结果
        [张三, 李四, 王五, 赵六, 杨七, 杨七, 杨七]
        李四
        [1, 2, 3]
        */
    }
}

3. ArrayList和LinkedList的区别

底层数据结构不同。ArrayList是动态数组的数据结构,可以通过下标的方式,快速找到对应内容,但是在进行插入和删除时,相对会比较慢,需要将插入位置后面的数组全部都往后移动对应的位数,或者将删除位置的数组全部向前移动,适用于查多改少的场景。LinkedList是链表的数据结构,需要进行查询时,需要遍历所有的数据进项查询,相对比较复杂;而进行数据插入时,只需要将pre指向上一个数据的next,next指向下一个数据pre,因此适用于查少改多的场景。

4.Set集合的构造

Set集合的方法上基本上与Collection的API一致,Set集合的实现类有以下特点

HashSet: 无序、不重复、无索引

LinkedHashSet: 有序、不重复、无索引

TreeSet: 可排序、不重复、无索引

5. 调用Set接口

public class SetTest {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("张三");
        set.add("李四");
        set.add("王五");
        set.add("赵六");
        set.add("杨七");
        set.add("杨七");
        set.add("杨七");
        System.out.println(set);
        //[李四, 张三, 王五, 杨七, 赵六]
        HashSet<Integer> set1 = new HashSet<>();
        set1.add(5);
        set1.add(6);
        set1.add(8);
        set1.add(10);
        set1.add(1);
        System.out.println(set1);

        LinkedHashSet<Integer> set2 = new LinkedHashSet<>();
        set2.add(5);
        set2.add(6);
        set2.add(8);
        set2.add(10);
        set2.add(1);
        System.out.println(set2);

        TreeSet<Integer> set3 = new TreeSet<>();
        set3.add(5);
        set3.add(6);
        set3.add(8);
        set3.add(10);
        set3.add(1);
        System.out.println(set3);

    }
}

 输出结果

继承于Map体系的双列集合

HashMap:无序、不重复、无索引;

LinkedHashMap: 按照插入的顺序有序、不重复、无索引。

TreeMap :按照值大小默认升序排序、不重复、无索引。

public class MapTest {
    public static void main(String[] args) {
        HashMap<String,Integer> hashMap = new HashMap<>();
        hashMap.put("手机",21);
        hashMap.put("手表",25);
        hashMap.put("手表",87);
        hashMap.put("手表",8);
        hashMap.put("手表",2);
        hashMap.put("电话",52);
        hashMap.put("耳机",30);
        System.out.println(hashMap);
        System.out.println(hashMap.get("手表"));
        System.out.println("*********************************************************");
        LinkedHashMap<String,Integer> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("篮球",21);
        linkedHashMap.put("足球",25);
        linkedHashMap.put("乒乓球",2);
        linkedHashMap.put("排球",8);
        linkedHashMap.put("保龄球",52);
        linkedHashMap.put("羽毛球",30);
        System.out.println(linkedHashMap);
        System.out.println(linkedHashMap.get("保龄球"));
        System.out.println("*********************************************************");
        TreeMap<Integer,String> treeMap = new TreeMap<>();
        treeMap.put(3,"橡皮");
        treeMap.put(25,"本子");
        treeMap.put(1,"修正液");
        treeMap.put(2,"胶带");
        treeMap.put(10,"笔");
        treeMap.put(5,"文具盒");
        System.out.println(treeMap);
        System.out.println(treeMap.get(10));
    }
}

HashMap适用于需要快速查找和插入键值对的场景,TreeMap适用于需要对键进行排序的场景,而LinkedHashMap适用于需要保持插入顺序的场景。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个帅气的程序员ovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值