• java 集合总结


    1.集合概述

    • java集合存放于java.util包下,是一个用来存放对象的容器。
    • 集合只能存放对象,如当存入一个int 型基本数据时,它会自动转化为integer类后存入。
    • 集合存放的是多个对象的引用,对象本身还存放在堆中。

    2.集合的分类,集合可以分为Set ,List, Msp三大种类:

    • Set:无序,不可重复的集合。
    • List: 有序,可重复的集合。
    • Map: 具有映射关系的集合。

    3.下面依次介绍一下各个集合:

    Set集合:

      HashSet:

        HashSet是set集合的典型实现类,大多时候使用set集合,都是使用这一实现类。它具有如下特点:不能保证元素的排列顺序,不可重复,不是线程安全的,可以使用null. 当HashSet集合存入一个元素时,HashSet会调用HashCode()方法,获得该元素的哈希码,然后根据此码,确定该元素在HashSet表中的位置。

                                        

        HashSet的基本应用如下:

            

    public static void main(String[] args) {
            Set set = new HashSet();//集合初始化
            set.add(1);//添加元素
            set.add("a");
            System.out.println(set);
            set.remove(1);//移除元素
            System.out.println(set);
            set.clear();//清空集合
            
            set.add("a");
            set.add("b");
            set.add("c");
            set.add("d");
            set.add("e");
            //遍历集合
            Iterator it = set.iterator();
            while(it.hasNext()) {
                System.out.println(it.next());
            }
            
            //for each迭代集合
            for(Object obj : set) {//将set里的所有元素赋给obj,然后输出
                System.out.println(obj);
            }
            
            
            //如果想要使集合只存储相同类型的数据,则需要用到泛型
            Set<String> set1 = new HashSet<String>();
            set1.add("adadad");
            //set1.add(1);//错误
            
        }
    HashSet

      TreeSet集合:

        TreeSet可以确保元素处于排列状态。TreeSet支持两种排序方式自然排序,定制排序。默认为自然排序。

                            

        TreeSet基本用法如下:

          

    public class Test5 {
    
        public static void main(String[] args) {
            //使用TreeSet时必须保证使用的是同样类型的对象(因为要比较大小进行排序)
            Set<Integer> set = new TreeSet<Integer>();
            set.add(5);
            set.add(2);
            set.add(4);
            set.add(1);
            set.add(3);
            System.out.println(set);//treeset从小到大自然排序
            set.remove(1);
            set.contains(3);
            //set.clear();
            
            
            //遍历集合
            Iterator<Integer> it = set.iterator();
            while(it.hasNext()) {
            System.out.println(it.next());
            }
                    
            //for each迭代集合
            for(Object obj : set) {//将set里的所有元素赋给obj,然后输出
            System.out.println(obj);
            }
            
            Person p1 = new Person("zhangsan",16);
            Person p2 = new Person("lisi",23);
            Person p3 = new Person("wangwu",15);
            Person p4 = new Person("zhaoliu",34);
            Person p5 = new Person("sunqi",19);
            
                    
            Set<Person> set1 = new TreeSet<Person>(new Person());
            set1.add(p1);
            set1.add(p2);
            set1.add(p3);
            set1.add(p4);
            set1.add(p5);
            
            //for each迭代集合
            for(Person obj1 : set1) {//将set里的所有元素赋给obj,然后输出
            System.out.println(obj1.name+"    "+obj1.age);
        }
        
        }
        
    }
    //treeset定制排序
    class Person implements Comparator<Person>{
        int age;
        String name;
        public Person() {
            
        }
        public Person(String name,int age) {
            this.age = age;
            this.name = name;
        }
        @Override
        public int compare(Person arg0, Person arg1) {//正序
            if(arg0.age>arg1.age) {
                return 1;
            }else if(arg0.age<arg1.age){
                return -1;
            }else {
                return 0;
            }
            
        }
        
    }
    TreeSet基本用法

    List集合:

        

    list集合基本用法:

    public static void main(String[] args) {
            //List默认按元素的添加顺序设置索引,且可以通过索引访问指定位置的元素
            List<String> list = new ArrayList<String>();
            list.add("a");//下标索引为0
            list.add("b");//下标索引为1 
            list.add("c");//下标索引为2 
            list.add("d");//下标索引为3
            list.add("d");
            System.out.println(list);
            System.out.println(list.get(2));//通过索引获取指定元素
            
            list.add(1, "abc");
            System.out.println(list);//在指定位置添加元素
            
            List<String> l = new ArrayList<String>();
            l.add("aaa");
            l.add("bbb");
            l.add("ccc");
            list.addAll(2, l);//在指定位置插入集合
            System.out.println(list);
            
            System.out.println(list.indexOf("abc"));//获取元素第一次出现时的下标索引
            
            list.set(0, "b");
            System.out.println(list);//根据下标索引修改指定元素
            
            List<String> sublist = list.subList(2, 4);//跟据下标索引获取一段元素的集合,包括头索引,不包括尾索引
            System.out.println(sublist);
            
        }
        
    ArrayList基本用法

    Map集合:

    map保存具有映射关系的数据,因此Map集合里保存着两组值,一组用于保存key一组用于保存value值,其中Map和Key都可以是任何引用类型的数据。map中的Key不允许重复。

    Map接口主要通过HashMap类实现,HashMap的主要用法如下:

    public static void main(String[] args) {
            Map<String,Integer> map = new HashMap<String,Integer>();
            map.put("1",6);//添加数据
            map.put("2",2);
            map.put("3",2);
            System.out.println(map);
            System.out.println(map.get("1"));//根据key取值
            map.remove("2");//根据key移除值
            System.out.println(map);
            System.out.println(map.size());//输出map的长度
            System.out.println(map.containsKey("1"));
            
            Set<String> keys = map.keySet();//获取集合的所有的key值
            map.values();//获取集合的所有value值
            //遍历map集合,通过map.KeySet()
            for(String key: keys) {
                System.out.println(key +"    "+map.get(key));
            }
            
            
            //遍历集合,通过map.entrySet();
            Set<Entry<String,Integer>> entrys = map.entrySet();
            for(Entry<String,Integer> en: entrys) {
                System.out.println(en.getKey() +"    "+en.getValue());
            }
            
            }
    HashMap基本用法

        

  • 相关阅读:
    Tongue Twister之scream
    把5页的内容变成2页
    Python3 字符串中的变量替换
    notepad++同时编辑多行
    获取元素属性值
    selenium定位H5表单验证的提示语
    POJ 3009 Curling 2.0(dfs)
    CCF 2016122 工资计算
    POJ 2976 Dropping tests(01分数规划二分(最大化平均值))
    POJ 2155 Matrix(二维树状数组)
  • 原文地址:https://www.cnblogs.com/wfswf/p/14636412.html
Copyright © 2020-2023  润新知