String和StringBuffer

String:我们对字符串的各种修改,都是通过在内存中不停开辟新空间的方式进行的。这种方式非常影响程序运行的性能

StringBuffer:直接修改(速度快,线程安全)。

集合架构 (java.util)

集合可以看作是一种容器,用来存储对象(集合只能存对象)

集合框架从整体上可以分为两大接口:

 

 

Collection接口:所有实现类均存储的是单一对象。

  • List接口:

​ 是Collection接口的子接口,存放的元素有序且允许重复

​ 常用实现类:ArrayList(重点) LinkedList Vector(知道即可)

public static void main(String[] args) {
        ArrayList al1=new ArrayList();//创建ArrayList集合对象
        ArrayList al2=new ArrayList();
        Stu stu1=new Stu("张三 ",12);//创建Stu对象
        Stu stu2=new Stu("李四 ",13);
        Stu stu5=new Stu("大宝 ",12);
        Stu stu6=new Stu("二宝 ",12);
        al1.add(stu1);al1.add(stu2);//在集合中添加对象
        al2.add(stu5);al2.add(stu6);
        al1.remove(stu1);//移出集合中对象
        System.out.println(al1.size());//获取元素个数
        System.out.println(al2.isEmpty());//判断集合是否为空
        System.out.println(al1.contains(stu1));//判断集合是否包含stu1对象(或者判断集合是否包含其他集合中的所有对象)
        al1.addAll(al2);//将一各集合中所有元素添加到另一个集合中
        al1.removeAll(al2);//移除al1和al2的交集
        al1.retainAll(al2);//仅保留al1和al2的交集
        al1.clear();//移除al1的所有元素
        Stu[] sArray=(Stu[])al2.toArray();//把al2转换成Stu数组
        System.out.println(al1.get(0));//索引从0开始,顺序为添加顺序
        for(int i=0;i<al1.size();i++) {//遍历集合al1
            System.out.println(al.get(i));
        }
  • set接口:

    Collection接口的子接口,存放的元素无序且不允许重复

    仍然使用Collection方法 ,没有get()方法(没有索引)。

    常用的实现类: HashSet:散列存放,无序

    TreeSet:有序存放,自然排序(升序,并非按照存入顺序)

    public static void main(String[] args) {
            Stu stu1=new Stu("张三 ",12);
            Stu stu2=new Stu("李四 ",13);
            Stu stu3=new Stu("王五 ",12);
            HashSet<Stu> hs=new HashSet(); //泛型
            hs.add(stu1);hs.add(stu2);
            hs.add(stu3);hs.add(stu3);//因为不允许重复,只会添加一个stu3对象
            for(Stu s:hs) {//因为无序,遍历需要用for each循环
                System.out.println(s.getName());
            }
        }
    ​
    
    public static void main(String[] args) {
            TreeSet<String> ts=new TreeSet();//泛型
            ts.add("d");ts.add("a");ts.add("e");
            ts.add("c");ts.add("b");//int类型会自动装箱
            for(String i:ts) {
                System.out.println(i);
            }
        }//输出结果是:abcde(升序)
  • Iterator接口(迭代器)(java.lang.Iterable):

​ 主要用于遍历Colleciton接口的及其子类而设计

public static void main(String[] args) {
        ArrayList hs=new ArrayList();
        hs.add("张三");hs.add("李四");
        hs.add("王五");hs.add("赵六");
        hs.add(666);
        Iterator it=hs.iterator();//求容器(集合就是一种容器)返回一个Iterator。
        while(it.hasNext()) {//检查序列中是否还有元素。
            System.out.println(it.next());//获得序列中的下一个元素。
        }
    }

Map接口:所有实现类均存储的是key-value(键值对)形式的数据。

​ key可以为任意类型,实际开发建议使用String , value也可以是任意类型;

​ 常用的实现类: :HashMap(重点,无序) HashTable (无序)TreeMap(自然)


  public static void main(String[] args) {
        HashMap hm=new HashMap();
        hm.put("1001", "张三");hm.put("1002", "李四");//往集合中添加数据
        hm.put("1003", "王五");hm.put("1004", "王五");
        System.out.println(hm.get("1001"));//根据key:1001来获取对应的value:张三
        System.out.println(hm.containsKey("1001"));//判断集合中是否包含key:1001
        System.out.println(hm.containsValue("张三"));//判断集合中是否包含Value:张三
        System.out.println(hm.isEmpty());//判断集合是否为空
        System.out.println(hm.values());//返回所有的value的集合     
        Set st=hm.keySet();//所有key的集合,返回类型为Set
        Iterator it=st.iterator();//Iterator接口(迭代器)
        while(it.hasNext()) {
            System.out.println(hm.get(it.next()));
        }
        //hm.putAll(hm2)  把一个Map集合hm2存入的Map集合hm中
        hm.remove("1004");//据key在Map中删除指定的key-value组合
        System.out.println(hm.size());//Map集合中key-value的长度
    }

 

 

 

posted on 2021-03-01 16:10  江晓峰  阅读(35)  评论(0编辑  收藏  举报