Java 集合类总结

一、集合类概述
集合类被称为容器,提到容器不难想到数组。
集合与数组:
1.数组的长度是固定的,集合的长度是可变的。(集合是动态数组)
2,数组来存放基本类型的数据,集合用来存放对象的引用。
常用的集合有List集合、Set集合和Map集合,其中List与Set继承了Collection接口。

二、Collection 接口
collection接口通常不能直接使用,List接口与set接口都继承了Collection接口,以此collection接口的方法List与Set也可以使用。


image.png

Collection接口常用方法
add(E e) 将指定的对象添加到该集合中
remove(Object o) 将指定的对象从该集合中移除
isEmpty() 返回boolean值,用于判断当前集合是否为空
iterator() 返回在此Collection的元素上进行迭代的迭代器。用于遍历集合中的对象
size() 返回int型,获取该集合中元素的个数。

Collection list =new ArrayList();//创建对象
    //1.添加对象
    list.add("hello");
    list.add("word");
    list.add("你好,世界");
    //2.遍历集合中的对象
    System.out.println("遍历对象");
    Iterator it = list.iterator();//创建迭代器
    while(it.hasNext()) {//判断是否有下一个元素
        String str = (String)it.next();
        System.out.println(str);
    }
    //3.判断集合是否为空和获取集合长度
    System.out.println("集合是否为空:"+list.isEmpty()+"集合的长度为:"+list.size());
    //4.删除指定对象
    list.remove("word");
    System.out.println("删除指定对象后,遍历对象");
    Iterator its = list.iterator();//创建迭代器
    while(its.hasNext()) {//判断是否有下一个元素
        String str = (String)its.next();
        System.out.println(str);    
    }
    System.out.println("集合是否为空:"+list.isEmpty()+"集合的长度为:"+list.size());
image.png
image.png

三、List集合
1.List集合包括List接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序就是对象插入的元素。用户可以通过使用索引(元素在集合中的位置)来访问集合中的元素。
2.list接口包含了Collection接口的所有方法, 即:add、remove、iterator、isEmpty、size方法。
3.list中两个特有的方法
1.get(int index) 获得指定索引位置的元素
2.set(int index,Object obj) 将集合中指定索引的对象修改为指定的对象
4.List接口的常用实现类有ArrayList和LinkedList
语法:List list = new ArrayList<>();
List list = new LinkedList<>();
E可以为合法的Java数据类型。必须为类,如:String、Integer、Boolean、Byte、Character、Double、Number。

public static void main(String[] args) {
     List list =new ArrayList<>();//创建集合对象
     //添加元素
     list.add(1);
     list.add(2);
     list.add(3);
     //获取元素
     int a = list.get(2);
     System.out.println(a);//3
     
     //设置元素
     list.set(1, 4);
     //遍历集合
     Iterator c = list.iterator();
     while(c.hasNext()) {
         int b = (int) c.next();
         System.out.println(b);//1 4 3
         
     }
}   

四、Set集合
1.Set集合中的对象不按特定的方式排序,简单把对象加入集合,但Set类不能有重复的对象。
2.Set接口常用的实现类有HashSet和TreeSet
Hashset不能保证Set的迭代顺序
TreeSet可通过比较来实现顺序的排序
3.Set接口继承了Collection接口,因此包含Collection接口所有方法。

4.1 TreeSet
Treeset类的新增方法:
1.first() 返回set类当前第一个元素
2.last() 返回Set中当前最后一个元素
3.comparator() 排序的比较器

  1. headSet(E toElement) 返回新的集合,在toElement(不包括)之前的对象
    5.subSet(E fromElement, E fromElement) 返回新的集合,在fromElement(包括)和fromElement(不包括)之间的对象

6.tailSet(E fromElement) 返回新的集合,在fromElement(包括)之后的对象
存入TreeSet类实现的Set集合必须实现Comparable接口,接口中的compareTo()用于比较,
该对象小于、等于、大于指定对象,则返回负整数、0和正整数
语法:TreeSet tree = new TreeSet();
步骤:1.创建新的类
实现Comparable接口
重写compareTo方法
2.主方法
创建对象
将对象添加到集合中

//1.创建接口Comparable
public class teacher implements Comparable{
int age;
double score;
String name;
//2.重写compareTo方法
@Override
public int compareTo(Object o) {
  teacher tea =(teacher)o;
  int result =this.age>tea.age?1:(this.age==tea.age?0:-1);
    return result;
}
//3.创建构造方法
public teacher(int age, double score, String name) {
    //super();
    this.age = age;
    this.score = score;
    this.name = name;
}

//定义toString方法
@Override
public String toString() {
    return "teacher [age=" + age + ", score=" + score + ", name=" + name + "]";//输出
}


}



public static void main(String[] args) {
    //1.创建对象
    teacher c1 = new teacher(18,60.0,"nn");
    teacher c2 = new teacher(21,67.0,"snn");
    teacher c3 = new teacher(12,66.1,"enn");
    teacher c4 = new teacher(19,63.8,"tnn");
    //2.创建集合并添加对象
    TreeSet tree =new TreeSet();
    tree.add(c1);
    tree.add(c2);
    tree.add(c3);
    tree.add(c4);
    //3.遍历集合
    Iterator it = tree.iterator();
      while(it.hasNext()){
        teacher str=(teacher)it.next();
        System.out.println(str.toString());
    }
      
    
}   
 
 
image.png

4.2 HashSet 类
语法:Set xx =new HashSet();

public static void main(String[] args) {
//1.创建对象
teacher c1 =new teacher(11,23.0,"nn");
teacher c2 =new teacher(6,21.0,"nnd");
teacher c3 =new teacher(14,87.0,"nnf");
teacher c4 =new teacher(87,45.0,"ndn");

//2.建立hash并插入
Set set1 =new HashSet();
set1.add(c1);
set1.add(c2);
set1.add(c3);
set1.add(c4);
//3.遍历集合
Iterator it = set1.iterator();
while(it.hasNext()) {
    teacher str = (teacher)it.next();
    System.out.println(str);
}
}   
image.png

五、Map集合
5.1 1.Map类没有Collection接口提供的方法,提供的是key到value的映射。Map中不能包含相同的key,每个key只能映射一个value。
2.常用的Map类方法:
put(K key,V value) 向集合内添加特定的key与value的映射关系
containsKey(Object key) 如果此映射包含指定key的映射关系,则返回true
containsValue(Object value) 如果此映射将一个或多个key映射到指定值,则返回true
get(Object key) 如果存在指定的key对象,则返回该对象对应的值,否则返回null
keySet() 返回该集合中的所有key对象形成的Set集合
values() 返回该集合中所有对象形成的Collection集合
1.Map接口的实现类有:HashMap和TreeMap
HashMap:基于哈希表的Map接口实现,允许使用null键和null值,必须保证键的唯一性。此类不保证映射的顺序,特别是它不保证该顺序持久不变。
TreeMap:集合关系中的映射关系具有一定的顺序,根据键对象按照一定的顺序排列的,不允许键的对象是null。(有序--->按照key来排序)

public static void main(String[] args) {
        Map map= new HashMap();
        //添加数据
        map.put("01", "小王");
        map.put("02","小刘");
        map.put("03","xx");
        //判断集合中是否包含相应的key和value
        System.out.println("在此集合中是否包含05:"+map.containsKey("05")+"在此集合中是否包含xx:"+map.containsValue("xx"));//在此集合中是否包含05:false在此集合中是否包含xx:true
        if(map.containsKey("01")) {
        System.out.println(map.get("01"));//获取key所对应的value  小王
        }
        else {
            System.out.println("不存在");
        }
        //将map赋值给set中(key对象)
        Set set =map.keySet();
        //遍历集合
        Iterator it = set.iterator();
        while(it.hasNext()) {
            String str = (String)it.next();
            System.out.println(str);
        }
        //将map赋值给collection中(值对象)
        Collection a = map.values();
        //遍历集合
        Iterator it1 = a.iterator();
        while(it1.hasNext()) {
            String str= (String)it1.next();
            System.out.println(str);
            
        }
        }   
image.png

5.2 Map接口的实现类

public class teacher{
    int age;
    String name;
//创建toString方法
    @Override
    public String toString() {
        return "teacher [age=" + age + ", name=" + name + "]";
    }
//构造方法
    public teacher(int age, String name) {
        super();
        this.age = age;
        this.name = name;
    }
}

    public static void main(String[] args) {
        //1.创建对象
        teacher c1 = new teacher(22,"小是");
        teacher c2 = new teacher(13,"小是");
        teacher c3 = new teacher(20,"小为");
        //2.创建HashMap(无序),并添加元素
        Map map = new HashMap();
            map.put(c1.age,c1.name);
            map.put(c2.age,c2.name);
            map.put(c3.age,c3.name);

        //3.获取map对象中的key和value,并将它们遍历
        Set set = map.keySet();
        Iterator s = set.iterator();
        while(s.hasNext()) {
            int str = (int)s.next();
            System.out.print(str+" ");
            System.out.print(map.get(str)+" ");
        }
}

image.png

你可能感兴趣的:(Java 集合类总结)