Java 重点 | Collection 集合的子类
 作者:几分醉意.
- 2022-10-30  安徽
 本文字数:3557 字
阅读完需:约 12 分钟
Collection 集合的子类
List 接口独有的常用方法
 举例介绍
public class List接口常用方法 {    public static void main(String[] args) {        List list = new ArrayList();
        list.add("aa");        list.add("bb");        //add()在列表的指定位置上插入指定元素(第一个参数是下标)        //这个方法使用不多,因为对于ArrayList集合来说效率不较        list.add(1,"cc");
        //get()根据下标获取元素        Object o = list.get(1);        System.out.println(o);//cc
        //因为有下标,所以List集合有自己比较特殊的遍历方式        //通过下标遍历。【List集合特有的方式,Set没有】        for (int i = 0; i < list.size(); i++) {            Object o1 = list.get(i);            System.out.println(o1); //aa cc bb        }
        //indexOf 获取指定对象第一次出现的索引        int index = list.indexOf("cc");        System.out.println(index); //1
        //lastIndexOf 获取指定对象最后一次出现的索引        int index1 = list.lastIndexOf("bb");        System.out.println(index1); //2
        System.out.println("======================");        //remove:删除指定下标位置的元素。        list.remove(0);        for (int i = 0; i < list.size(); i++) {            Object o1 = list.get(i);            System.out.println(o1); // cc bb        }
        //set:修改指定位置的元素        list.set(1,"aaa");
        System.out.println("======================");
        for (int i = 0; i < list.size(); i++) {            Object o1 = list.get(i);            System.out.println(o1); // cc aaa        }
    }}
复制代码
 ArratList 集合介绍
 
 
 三种构造方法
/** * 三种构造方法 */
public class ArratList集合 {    public static void main(String[] args) {        //无参构造 默认初始化容量为10        List list = new ArrayList();
        //有参构造更改初始化容量为20        List list1 = new ArrayList(20);
        //创建一个HashSet集合        Collection c =new HashSet();        c.add(1);        c.add(2);        c.add(6);        c.add(4);
        //通过这个构造方法 可以将HashSet集合转换成List集合        List list2 =new ArrayList(c);        for (int i =0;i<list2.size();i++){            System.out.println(list2.get(i));        }    }}
复制代码
 LinkedList 集合
 链表的优缺点
链表的优点:
由于链表上的元素在空间存储上内存地址不连续。
所以随机增删元素的时候不会有大量元素位移,因此随机增制效率较高。在以后的开发中,如果遇到随机增删集合中元素的业务比较多时,建议使用 LinkedList。
链表的缺点:
不能通过数学表达式计算被查找元素的内存地址,每一次查找都是从头节点开始遍历,直到找到为止。所以 LinkedList 集合检索/查找的效字较低。
ArrayList:把检索发挥到极致。(末尾添加元素效事还是很高的。 LinkedList:把随机增删发挥到极致。
加元素都是往末尾添加,所以 ArrayList 用的 LinkedList 多。
常用方法
private static void domed01() {        /*            public void addFirst(E w):将指定元素添加到此列表的开头 此方法等效push            public void addLast(E e):将指定元素添加到此列表的结尾  此方法等效于add            public void push(E e):将元素推入此列表所表示发堆栈 此方法等效addFirst         */
        // 创建LinkedList        LinkedList<String> lin = new LinkedList<String>();        // 使用add方法往集合添加元素        lin.add("a");        lin.add("b");        lin.add("c");        System.out.println(lin); // [a, b, c]
        //public void addFirst(E w):将指定元素添加到此列表的开头 此方法等效push//        lin.addFirst("www");        lin.push("www");        System.out.println(lin); //[www, a, b, c]
        //public void addLast(E e):将指定元素添加到此列表的结尾 此方法等效于add        lin.addLast("com");        System.out.println(lin);//[www, a, b, c, com]    }
    private static void domed02() {        /*            public E getFirst():返回此列表第一个元素            public E getLast():返回此列表最后一个元素         */
        // 创建LinkedList        LinkedList<String> lin = new LinkedList<String>();        // 使用add方法往集合添加元素        lin.add("a");        lin.add("b");        lin.add("c");
//        lin.clear(); //清空集合中的元素,在获取集合中的元素会抛出NoSuchElementException        //添加判断        // public boolean isEmpty(): 如果列表不包含元素,则返回ture ;空的返回ture        if (!lin.isEmpty()) { //!lin.isEmpty()添加取反,不是空的返回ture,才执行;是空的就不获取了            String first = lin.getFirst();            System.out.println(first); //a            String last = lin.getLast();            System.out.println(last); //c        }
    }
    private static void domed03() {        /*            public E removeFirst(): 移除并返回此列表的第一个元素            public E removeLast():移除并返回此列表的最后一个元素            public E pop(): 从此列表所表示的堆栈处弹出一个元素。此方法相当于removeFirst         */
        // 创建LinkedList        LinkedList<String> lin = new LinkedList<String>();        // 使用add方法往集合添加元素        lin.add("a");        lin.add("b");        lin.add("c");        System.out.println(lin); // [a, b, c]
        String s = lin.removeFirst();//        String pop = lin.pop();        System.out.println("被移除的以一个元素:"+s); //被移除的以一个元素:a        String s1 = lin.removeLast();        System.out.println("被移除的最后一个元素:"+s1); //被移除的最后一个元素:c    }
复制代码
 Vector 集合
 
 HashSet 集合
 
 代码示例
public static void main(String[] args) {        Set<Integer> set = new HashSet<>();        //使用add方法添加元素        set.add(1);        set.add(3);        set.add(2);        set.add(1);        System.out.println(set); //[1, 2, 3]
        //使用迭代器遍历        Iterator<Integer> iterator = set.iterator();        while (iterator.hasNext()){            Integer next = iterator.next();            System.out.println(next);        }
        //使用增强for        for (Integer integer : set) {            System.out.println(integer);        }    }
复制代码
 TreeSet 集合
 
 
 
 可变参数
 代码示例
 public static void main(String[] args) {//        int i = add();//        int i = add(10);//        int i = add(10,20);        int i = add(10,20,30,40,50,60,70,80,90,100);        System.out.println(i);        aa(1,2.3,"iws");    }    /*        定义计算(0-n)个整数和的方法        已知:计算整数的和,数据类型已经确定int        但是参数的个数不确定,不知道要计算几个整数的和,就可以使用可变参数
        调用add();方法,就会创建一个长度为0的数组,new int[0]        调用add(10);方法,就会创建一个长度为1的数组,存储传递过来的参数 new int[]{10};        调用add(10,20);方法,就会创建一个长度为2的数组,存储传递过来的参数 new int[]{10,20};        调用add(10,20,30,40,50,60,70,80,90,100);方法,就会创建一个长度为10的数组,存储传递过来的参数        new int[]{10,20,30,40,50,60,70,80,90,100};
        add(10);     */    public static int add(int...arr){//        System.out.println(arr); //[I@7c30a502 底层是一个数组//        System.out.println(arr.length);//0,1,2,10        //定义一个初始化变量,记录累加和求和        int sum = 0;        //遍历数组,获取数组中的每一个元素        for (int i : arr) {            sum+=i;        }        //把求和结果返回        return sum;    }    //可变参数终极写法    public static void aa(Object...obj){        System.out.println(obj.length);    }}
复制代码
 划线
评论
复制
发布于: 刚刚阅读数: 3
版权声明: 本文为 InfoQ 作者【几分醉意.】的原创文章。
原文链接:【http://xie.infoq.cn/article/af64f87edeb61f7b7e8d55186】。文章转载请联系作者。
几分醉意.
关注
还未添加个人签名 2022-10-22 加入
还未添加个人简介









    
评论