Java集合

在这里插入图片描述

【1. Collection接口】

package com.msb;

import java.util.*;

public class testc {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        Collection c1 = new ArrayList();
        c.add(10);//自动装箱,单个添加
        c1.addAll(c);//添加集合
        List l = Arrays.asList(new Integer[]{1, 2, 3});
        List l1 = Arrays.asList(new int[]{1, 2, 3});//[I@1b6d3586]
        c.addAll(l);//添加集合
        c.addAll(l1);//为什么添加效果不一样呢??
//        c.clear();//清除
        System.out.println(c.size());//集合长度
        System.out.println(c.isEmpty());//是否为空
        for (Object o:c) {//遍历集合
            System.out.print(o);
        }
        Iterator it = c.iterator();
        while (it.hasNext()){//遍历集合
            System.out.println(it.next());
        }
    }
}

【1.1 List接口】

不唯一、有序

package com.msb;

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

public class TestList {
    public static void main(String[] args) {
        /*
        * 1.增加:add set
        * 2.删除: remove
        * 3.修改
        * 4.查看: get
        * 5.判断
        * */
        List list = new ArrayList();//接口 = 具体实现类
        list.add(1);
        list.add(1,6);//index取值范围[0,list.size()]
        list.set(1,29);//index取值范围[0,list.size())
        //list.remove(1);//list中存储的是Interger,删除指定下标的值
        Object o = list.get(1);//获取指定下标的值
        for (int i = 0; i < list.size(); i++) {//遍历循环
            System.out.println(list.get(i));
        }
        System.out.println("*******************************");
        for (Object o1:list) {//遍历循环
            System.out.println(o1);
        }
        System.out.println("*******************************");
        Iterator it = list.iterator();//遍历循环
        while (it.hasNext()){
            System.out.println(it.next());
        }
//        System.out.println(list);
//        System.out.println(o);
    }
}

【1.1.1 ArrayList实现类】

package com.msb;

import java.util.*;

public class TestArrayList {
    public static void main(String[] args) {
        //接口 = 实现类
        Collection col = new ArrayList();
        List list = new ArrayList();
        //直接创建实现类
        ArrayList<String> al = new ArrayList();
        al.add("a");
        al.add("b");
        al.add("c");
        al.add("e");
        System.out.println(al);

        //在c之后添加字符d
        //方法:遍历
        //Iterator<String> it = al.iterator();  //--->iterator没有添加元素方法。
        ListIterator<String> it = al.listIterator();
       /* while (it.hasNext()){
            if("c".equals(it.next())){
                //al.add("d");//--->遍历没有作用,ArrayList 的add()功能是在最后增加值。
                it.add("d");
                break;
            }
        }*/
        System.out.println(al);
        System.out.println(it.previousIndex());//当前游标前一个索引值
        System.out.println(it.nextIndex());//当前游标位置

        //正向遍历
        while (it.hasNext()){
            System.out.println(it.next());
        }

        //逆向遍历
        //ListIterator<String> it1 = al.listIterator();
        while (it.hasPrevious()){//如果直接用逆向遍历是不可以的。游标不在最后一个,不会遍历、
            System.out.println(it.previous());
        }
    }
}

【1.1.2 LinkedList实现类】

package com.msb;

import java.util.Iterator;
import java.util.LinkedList;

public class TestLinkedList {
    public static void main(String[] args) {
        /*
        * 增加
        * 查看
        *
        * */
        LinkedList<String> list = new LinkedList();//实例化,指定泛型

        //增加单个元素,可以添加重复数据
        list.add("a");
        list.add("a");
        list.add("b");

        //在最前端,添加元素
        list.addFirst("first");
        list.offerFirst("offerfirst");

        //在尾端,添加元素
        list.addLast("last");
        list.offer("offer");
        list.offerLast("offerlast");


        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));//1.根据索引,得到元素
        }
        System.out.println("------------------------------");
        for (String s : list){
            System.out.println(s);//2.
        }
  /*      System.out.println("------------------------------");
        Iterator<String> it = list.iterator();//3.迭代器
        while (it.hasNext()){
            System.out.println(it.next());
        }*/
        System.out.println("------------------------------");
        for( Iterator<String> it = list.iterator();it.hasNext();){//节省内存,it在循环内部,使用完之后就释放
            System.out.println(it.next());
        }


        //删除第一个元素,并且返回第一个元素的值。当列表为空时,返回值不同。
        {
            System.out.println(list.poll());
        }
        System.out.println(list.pollFirst());
        System.out.println(list.removeFirst());

        //删除最后一个元素,并且返回元素的值。
        System.out.println(list.pollLast());
        System.out.println(list.removeLast());

        //清空集合
        list.clear();
        System.out.println(list);
    }
}

【1.2 Set接口】

【1.2.1 HashSet实现类】

唯一、无序

package com.msb;

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

public class TestHashSet {
    public static void main(String[] args) {
        //创建HashSet集合
        HashSet<Integer> hs = new HashSet();
        HashSet<Person> hsp = new HashSet();
        /*
        * 自定义类使用HashSet
        * 1.重写 HashCode 和 equals方法,才可以避免构造方法传入相同参数问题
        * 存储的数据,使用HashCode方法计算哈希值,
        * 再通过哈希值和一个表达式,计算在数组中的存放位置,
        * 当同一位置存在不同数值时,以链式方法连接。
        * 数组+链接=哈希表*/
        hsp.add(new Person(1,"1"));
        hsp.add(new Person(1,"1"));
        System.out.println(hsp);


        hs.add(2);
        hs.add(1);
        hs.add(2);
        System.out.println(hs.size());
        System.out.println(hs);
        Iterator<Integer> it = hs.iterator();
        while (it.hasNext()){//唯一、无序
            System.out.println(it.next());
        }

    }
}

【1.2.2 LinkedHashSet实现类】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值