您的位置:首页 > 产品设计 > UI/UE

Java探索之旅(10)——数组线性表ArrayList和字符串生成器StringBuffer/StringBuilder

2014-10-31 10:55 393 查看

1.数组线性表ArrayList



数组一旦定义则不可改变大小。ArrayList可以不限定个数的存储对象。添加,插入,删除,查找比较数组更加容易。可以直接使用引用类型变量名输出,相当于toString()。输出一个数组([,,,,,,]),数组中元素为对应标号存储元素的toString[]。
数组线性表和数组的区别总结如下:



public class TestArrayList {
	public static void main(String[] args)
	{
		java.util.ArrayList<Person> PersonList=new java.util.ArrayList<Person>();
		PersonList.add(new Person("张三","湖北宜昌"));
		PersonList.add(new Person("李四","广东东莞"));
		PersonList.add(1,new Person("王五","湖南永州"));
		System.out.println((PersonList.get(1)).toString());
		System.out.println(PersonList);//使用引用类型变量名称
	}

}
class Person {
    protected String name;
    protected String address;
    
    Person(){this(null,null);}
    Person(String a,String b)
       {name=a;address=b;}
    
    public  String toString()
    {
    		return name+":"+address;
    }
}

2.字符串生成器类StringBuilder/StringBuffer

只要使用String的地方都可以使用两者。区别于String一旦确定无法更改,StringBuffer/StringBuilder可以灵活的(指定位置)增加,删除,插入,设置内容。2者构造方法类似,一般单任务访问使用StringBuilder,多任务访问使用StringBuffer.

StringBuilder sb1=new StringBuilder();//默认16的字符串生成器
          StringBuffer sb2=new StringBuffer(20);//指定容量的字符串生成器
          StringBuilder sb3=new StringBuilder(new String("ABCDEF"));//指定字符串的字符串生成器


不同于String,字符串生成器长度属性包括容量capacity()和长度length(),前者表示能够存储的长度,后者表示现存的字符个数,空闲位置设置为null。JVM采用生成器容量自动增加机制。可以使用trimToSize()减少实际存储所需内存。

以下成员函数均完成修改源生成器内容,返回生成器引用。
     ❶字符追加函数append(data)/append(data,int start,int end)。
        完成追加或者部分追加字符数组或追加基本数据类型(char,boolean,byte,short,int,long,float,double)和String至生成器末尾
     ❷字符删除函数delete(int start,int end) 和deleteCharAt(int)
         删除一段字符或者指定位置字符
     ❸字符插入函数insert()
         类似于append(),但最前面添加int参数,表征插入位置
     ❹整段替换函数和重新设置指定位置字符
         replace(int start,int end,String s)。特定字符串s进行字符串段替换
                    setCharAt(int,char ch) 重新设置指定位置字符 
     ❺完全颠倒顺序reverse()和获取子串函数substring(int)/subString(int,int)

判断输入字符是不是回文串,忽略非数字和字母的字符

import java.util.Scanner;
public class StudyString {
	private static Scanner input;
	public static void main(String[] args) {      
          System.out.println("输入待检测字符");
          Scanner input=new Scanner(System.in);
          StringBuffer sb=filter(input.nextLine());
          if((sb.toString()).equals((sb.reverse()).toString()))
        	  System.out.println("是回文串");
         else
        	 System.out.println("不是回文串");
	}
	public static StringBuffer filter(String s)//滤去非字母或者数字的字符
	{
		StringBuffer sb=new StringBuffer();
         for(int i=0;i<s.length();i++)
        	 if(Character.isLetterOrDigit(s.charAt(i)))
				sb.append(s.charAt(i));
         return sb;
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐