java学习基础知识七

一、java集合概述
1、java集合类存放于java.util包中,是一个用来存放对象的容器。
  →集合只能存放对象。
  →集合存放的是多个对象的引用,对象本身还是放在堆内存中
  →集合可以存放不同类型,不限数量的数据类型
2、java集合可分为Set、List、和Map三大体系
  Set:无序,不可重复的集合
  List:有序,可重复的集合
  Map:具有映射关系的集合
  在JDK5之后,增加了泛型,java集合可以记住容器中对象的数据类型

二、HashSet:HashSet是Set接口的典型实现,按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。
1、HashSet具有以下特点:
  →不能保证元素的排列顺序;
  →不可重复;
  →HashSet不是线程安全的;
  →集合元素可以使null
2、当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,
  然后根据hashCode值决定返回对象在HashSet中的存储位置。

三、TreeSet:TreeSet是SortedSet接口的实现类,TreeSet可以确保集合元素处于排序状态。
  TreeSet支持两种排序方法:自然排序和定制排序。默认情况下,TreeSet采用自然排序

  

Person p1=new Person("张三",25);
        Person p2=new Person("李四",23);
        Set<Person> s=new TreeSet<Person>(new Person());
        s.add(p1);
        s.add(p2);
        //System.out.println(s);
        
        for(Person p:s){
            System.out.println(p.name+"	"+p.age);
        }
        
        /**
 * 声明一个Person类
 * 包含变量name和age
 * @author 小虞哥哥
 *
 */
class Person implements Comparator<Person>{        //把person对象存到TreeSet中并按照年龄排序
    int age;
    String name;
    
    public Person(){}
    
    public Person(String name,int age){
        this.name=name;
        this.age=age;
    }
    
    @Override
        public int compare(Person o1, Person o2) {    //按照年龄正序排列
        if(o1.age>o2.age){
            return 1;
        }else if(o1.age<o2.age){
            return -1;
        }else{
            return 0;
        }
    }
}

四、List与ArrayList
1、List代表一个元素有序、且可重复的集合,集合中的每个元素都有其对应的顺序索引
2、List允许使用重复元素,可以通过索引来访问指定位置的集合元素。
3、List默认按元素的添加顺序设置元素的索引
4、List集合里添加了一些根据索引来操作集合元素的方法
注:ArrayList和Vector是List接口的两个典型实现,区别如下:
  →Vector是一个古老的集合,通常建议使用ArrayList;
  →ArrayList是线程不安全的,而Vector是线程安全的;
  →即使为保证List集合线程安全,也不推荐使用Vector

五、Map:用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的Key,另外一组用于保存Map里的Value
1、Map中的Key和Value都可以是任何引用类型的数据
2、Map中的Key不允许重复
3、Key和Value之间存在单向一对一关系,即通过指定的Key总能找到唯一的,确定的Value

六、TreeMap:存储Key-Value对时,需要根据key对key-value对进行排序。TreeMap可以使所有的key-value对处于有序状态

七、操作集合的工具类:Collections:是一个操作Set、List和Map等集合的工具类
1、排序操作:
  →reverse(List):反转List中元素的顺序
  →shuffle(List):对List集合元素进行随机排序
  →sort(List):根据元素的自然顺序对指定List集合元素按升序排序
  →sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序
  →swap(List,int,int):将指定list集合中的i处元素和j处元素进行交换
2、查找、替换
  →Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
  →Object max(Collection,Comparator):根据Comparator指定的顺序,返回给定集合中的最大元素
  →同理可得min
  →int frequency(Collection,Object):返回指定集合中指定元素的出现次数
  →boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换旧值

八、同步控制:Collection类中提供了多个synchronizedXxx()方法,该方法可将指定集合包装成线程同步的集合,从而解决多线程并发访问集合时的线程安全问题

原文地址:https://www.cnblogs.com/MeiToufu/p/14337245.html