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基本用法

    

原文地址:https://www.cnblogs.com/wfswf/p/14636412.html