Java集合类

Java集合类,第1张

Java集合

集合类

集合类是特殊的类,用来存放其他类对象的容器,主要完成数据库和数据结构的功能,使程序更强大,简单,就相当于一个动态数组

Set List有一个共同的父类Collection

Collection常用方法(子类继承父类方法)

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo1 {
    public static void main(String[] args) {
        Collection c = new ArrayList();//Collection接口对象
        System.out.println("集合不是空的 "+c.isEmpty()+"集合的长度 "+c.size());
        c.add("你好");
        c.add(3.14);
        c.add(new Object());
        System.out.println("集合不是空的 "+c.isEmpty()+"集合的长度 "+c.size());

        c.remove(3.14);//删掉3.14
        System.out.println("集合不是空的 "+c.isEmpty()+"集合的长度 "+c.size());

        Iterator it = c.iterator();
        while (it.hasNext()){
            Object o =it.next();
            System.out.println(o);
        }
    }
}

 

 

List

Java中表示列表,可以存放很多元素的队列,可以精确查找每个位置上的元素

ArrayList和linkedList的区别

添加元素:

ArrayList要把数组拆分强行插入数组中,如果数量大的话很消耗资源

linkedList在2和3之间加入一个三,排列顺序变为1-2-a-3

 

查找元素

ArrayList:为数组索引0

linkedList:根元素遍历临时给一个索引

 

 

 

import java.util.ArrayList;
import java.util.List;

public class Demo2 {
    public static void main(String[] args) {
        List list = new ArrayList();//实例化
        //List list = new linkList();的方法完全通用,存储内部结构不同
        //list可以插入同一个内容

        list.add("清明时节雨纷纷");
        list.add("孤家寡人欲断魂");
        list.add("借问美女何处有");
        list.add("牧童遥指三里屯");
//        System.out.println(list.get(2));
//        System.out.println(list.get(0));
          list.remove(1);
          list.add(1,"孤家寡人独享乐");
          list.set(1,"借问女为何为尼");
          list.add("清明时节雨纷纷");
          list.add("借问美女何处有");
          list.add("孤家寡人欲断魂");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
            System.out.println("list的索引为 "+i+"的元素: "+list.get(i));
        }
//        System.out.println(list.get(2));//3 下标越界抛出异常
    }
}

Set接口

不放重复的对象

HashSet散列集合

TreeSet树集合

存放有序

语法:
 Set set = new TreeSet();

Set接口提供方法

 

 

package set;

public class Person implements Comparable{
    int id;
    int age;
    String name;

    public Person(int id, int age, String name) {
        this.id = id;
        this.age = age;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +"id=" + id +", age=" + age +", name='" + name + ''' +'}';
    }

    @Override
    public int compareTo(Object o) {
        //三个返回值:负数,正数,0

        Person p;
        if (o instanceof Person){
            p=(Person) o;
        }else{
            return -1;//-1代表传入的参数比我本身要小
        }
        int diff =this.age - p.age;
        if (diff!=0){
            diff =diff /Math.abs(diff);
        }
        return diff;
    }//接口Cloneable

}
package set;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Demo {
    public static void main(String[] args) {
        Set set = new TreeSet();
        Person p1 =new Person(1,18,"小明");
        Person p2 =new Person(2,5,"大壮");
        Person p3 =new Person(3,20,"阿强");

        set.add(p1);
        set.add(p2);
        set.add(p3);
        set.add(p3);//重复的元素不会加到集合中
        //set.add(null);//tree集合不能保存null值
        System.out.println(set.size());

        Iterator it=set.iterator();//迭代器
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }
}

package hashset;

import java.util.Objects;

public class Person {
    int id;
    String name;

    public Person(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +"id=" + id +", name='" + name + ''' +'}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return id == person.id;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}
package hashset;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Demo {
    public static void main(String[] args) {
        //创建集合对象
        Set set = new HashSet();
        Person p1 = new Person(1,"小明");
        Person p2 = new Person(2,"大壮");
        Person p3 = new Person(3,"阿强");
        set.add(p1);
        set.add(p2);
        set.add(p3);
        //set.add(null);
        //set.add(p3);不能有重复的元素
        p2.id=5;
        set.remove(p2);//id=5的hascode
        //一个元素添加到集合中,最好不要修改,hascode值改变
        p2.id=5;
        set.add(p2);

        System.out.println(set.size());

        Iterator it =set.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }
}

Map集合

map 键key,值value

HashMap TreeMap

map m = new HashMap();
map m = new TreeMap();
package Map;

import java.util.*;

public class Demo {
    public static void main(String[] args) {
        Map map = new HashMap();
        //Map map = new TreeMap();使用方法相同


        map.put("String","这是一个字符串");
        map.put("Object",new Object());
        map.put(null,null);
        map.put(1,1);
        System.out.println("map中元素个数"+map.size());

        Set set =map.keySet();//取出所有key值,存到Set集合
        Iterator it=set.iterator();//迭代器,查看值
        while (it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println(map.get(1));
    }
}
List结构集合类
ArrayList linkedList 
Map结构集合类
HashMap HashTable
Set结构集合类
HashSet TreeSet
Queue结构集合类和Queue接口

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/4658944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存