zoukankan      html  css  js  c++  java
  • JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)

    主函数类MainDemo.java

    package com.itcast.test20140109;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Comparator;
    import java.util.Enumeration;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.LinkedHashSet;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.ListIterator;
    import java.util.TreeSet;
    import java.util.Vector;
    
    public class MainDemo {
    
        public static void main(String[] args) {
            // StringUserMethod();
            // StringBufferUserMethod();
            /*
             * StringBuffer是线程同步的,通常用于多线程
             * StringBuilder是线程不同步的,多线程不安全,通常用于单线程,JDK1.5以后出现,提高效率
             */
            
            /*
             * 基本数据类型对象包装类
             * 为了方便操作基本类型值,将其封装成了对象
             * 用于描述该对象的类就称为基本数据类型对象包装类
             * byte Byte
             * short Short
             * int Integer
             * long Long
             * float Float
             * double Double
             * char Character
             * boolean Boolean
             */
            
            //进制转换
            //ConvertJinzhi();
            
            //关于Collection的使用
            CollectionUser();
            
        }
        
        
        /**
         * 关于Collection的使用
         */
        public static void CollectionUser() {
            /*
             * Collection的常见方法:
             * boolean isEmpty();判断集合中是否有元素
             * int size()
             * Iterator iterator();取出元素的方式,迭代器
             * Iterator接口就是对所有的Collection容器进行元素取出的公共接口
             * boolean retainAll(Collection coll):取交集
             * 
             */
            Collection collection = new ArrayList();
            collection.add("aa1");
            collection.add("aa2");
            collection.add("aa3");
            //使用集合后不需要使用迭代器,使用for,若还需要使用,就使用while
            for (Iterator iterator = collection.iterator();iterator.hasNext();) {
                System.out.println(iterator.next());
            }
            
            Iterator iterator = collection.iterator();
            while(iterator.hasNext()){
                System.out.println(iterator.next());
            }
            
            /*
             * List:有序(存入和取出的顺序一致),元素都有索引,元素可以重复
             * Set:元素不能重复,无序。
             * Object set(index,element);修改List集合中的元素
             * Object get(index);获取List集合中的元素
             * List subList(from,to);获取List集合中的子集合元素
             */
            
            //使用ListIterator操作List集合
            List list = new ArrayList();
            list.add("1");
            list.add("2");
            list.add("3");
            ListIterator it = list.listIterator();//使用listIterator可以修改list集合中的元素,不会抛出异常
            while(it.hasNext()){
                Object object = it.next();
                if(object.equals("2")){
                    it.add("4");//要添加到迭代器中,不能list.add("4");
                }
                System.out.println(object);
            }
            System.out.println(list);
            
            /*
             *Vector:内部是数组数据结构,是同步的。正删查都很慢
             *ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。
             *LinkedList:内部是数组数据结构。是不同步的。增删元素的速度很快 
             */
            Vector vector = new Vector();
            vector.addElement("a1");
            vector.addElement("a2");
            /*
             * 下面这种写法不推荐使用,应该使用Iterator
             */
            Enumeration enumeration = vector.elements();
            while (enumeration.hasMoreElements()) {
                System.out.println(enumeration.nextElement());
            }
            
            LinkedList linkedList  = new LinkedList();
            linkedList.addFirst("linkedList1");
            linkedList.addFirst("linkedList2");
            System.out.println(linkedList.getFirst());//获取第一个但不删除
            System.out.println(linkedList.removeFirst());//返回删除的这个元素
            
            /*
             * HashSet集合数据结构是哈希表,所以存储元素的时候,使用元素的hashCode方法来确定元素的位置,
             * 再通过元素的equals方法来确定是否相同,如果存储自定义对象,可以重写hashCode方法和equals方法
             * LinkedHashSet 有序的存储方式,HashSet hashSet = new LinkedHashSet();
             * TreeSet:可以对TreeSet集合中元素进行排序,是不同步的,会调用compareTo()进行比较排序,
             * 如果自定义类型排序,
             * 1.需要实现Comparable接口,重写compareTo()方法
             * 2.定义一个类实现Comparator接口,覆盖compare方法,将该类对象作为参数传递给TreeSet集合的
             * 构造函数,推荐使用这种TreeSet treeSet = new TreeSet(new ImplementComparator());
             * 比如字符串长度比较
             */
            TreeSet treeSet = new TreeSet(new CompareByStringLength());
            treeSet.add("bb");
            treeSet.add("aaa");
            for (Object object : treeSet) {
                String string = object.toString();
                System.out.println(string);
            }
            
        }
    
    
    
        /*
         * 进制转换
         */
        public static void ConvertJinzhi() {
            /*整数具备不同的进制体现
             * 十进制转换其他进制
             */
            System.out.println(Integer.toBinaryString(60));//转换二进制
            System.out.println(Integer.toOctalString(60));//转换八进制
            System.out.println(Integer.toHexString(60));//转换十六进制
            /*
             * 其他进制转换十进制
             */
            System.out.println(Integer.parseInt("111100",2));//二进制转换十进制 
            System.out.println(Integer.parseInt("74",8));//八进制转换十进制 
            System.out.println(Integer.parseInt("3c",16));//十六进制转换十进制 
        }
    
        /*
         * StringBuffer 使用
         */
        public static void StringBufferUserMethod() {
            /*
             * StringBuffer:就是字符串缓冲区 用于存储数据的容器。 特点: 1.长度是可变的 2.可以存储不同类型数据。
             * 3.最终要转车字符串进行使用。 4.可以对字符串进行修改。
             * 
             * StringBuffer append(data); StringBuffer insert(index,date);
             * StringBuffer delete(start,end); StringBuffer deleteCharAt(int
             * index);//删除指定位置的元素 char charAt(index) int indexOf(string) int
             * lastIndexOf(string); StringBuffer replace(start,end,String);
             */
            StringBuffer stringBuffer = new StringBuffer();
            stringBuffer.append(true).append("1");
            System.out.println(stringBuffer.toString());// true1
            stringBuffer.insert(1, "a");
            System.out.println(stringBuffer.toString());// tarue1
        }
    
        /*
         * String类使用
         */
        public static void StringUserMethod() {
            String s1 = "abcd";// 创建一个字符串在常量池中
            String s2 = new String("abcd");// 创建两个对象,一个new,一个字符串对象在堆内存中
            System.out.println(s1 == s2);// false
            System.err.println(s1.equals(s2));// true,比较内容
    
            System.out.println(s1.length());// 4
            System.out.println(s1.charAt(2));// c
            System.out.println(s1.indexOf('c'));// 2,找不到返回-1
            System.out.println(s1.lastIndexOf('d'));// 3,lastIndexOf根据字符串获取在字符串中的第一次出现的位置
            System.out.println(s1.substring(0, 1));// a
    
            /*
             * String [] split(String regex); char[] toCharArray(); byte[]
             * getBytes(); String toUpperCase(); String toLowerCase(); String
             * replace(char oldch,char newch) String replace(String s1,String s2);
             * String trim(); String concat(string);//将字符串进行连接
             */
    
            /*
             * boolean equals(Object obj) boolean equalsIgnoreCase(String str)
             * boolean startsWith(String str) boolean endsWith(String str)
             */
            System.out.println("a".compareTo("b"));// -1,a<b
        }
    }

    字符串长度比较器CompareByStringLength.java

    package com.itcast.test20140109;
    
    import java.util.Comparator;
    
    /**
     * 字符串长度比较器
     * @author yxl
     *
     */
    public class CompareByStringLength implements Comparator{
    
        @Override
        public int compare(Object o1, Object o2) {
            String s1 = (String)o1;
            String s2 = (String)o2;
            int temp = s1.length()-s2.length();
            return temp==0?s1.compareTo(s2):temp;
            
        }
    
    }
  • 相关阅读:
    1386. 安排电影院座位
    1123. 最深叶节点的最近公共祖先
    375. 猜数字大小 II
    未能在system.drawing中找到bitmap
    856. 括号的分数
    140. 单词拆分 II
    5909. 并行课程 III
    typora + ImgHosting (一款不会存储图片的图床实现)
    IDEA插件:search with bing、search with baidu
    多吉搜索美化
  • 原文地址:https://www.cnblogs.com/yxlblogs/p/3518028.html
Copyright © 2011-2022 走看看