Java探索之旅(10)——数组线性表ArrayList和字符串生成器StringBuffer/StringBuilder
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;
}
}
Java探索之旅(10)——数组线性表ArrayList和字符串生成器StringBuffer/StringBuilder的更多相关文章
- 数组线性表ArrayList 和链表类LinkedList
数组线性表类ArrayList 和链表类LinkedList 是实现List接口的两个具体类.ArrayList 数组储存元素,这个数组是动态创建的.如果元素个数超过了数组的容量,就创建一个更大的新数 ...
- Java探索之旅(5)——数组
1.声明数组变量: double[] array=new double[10]; double array[]=new double[10]; double[ ...
- Java探索之旅(15)——包装类和字符类
1.包装类 ❶出于对性能的考虑,并不把基本数据类型作为对象使用,因为适用对象需要额外的系统花销.但是某些Java方法,需要对象作为参数,例如数组线性表ArrayList.add(Object).Jav ...
- JAVA中的数据结构——集合类(线性表:Vector、Stack、LinkedList、set接口;键值对:Hashtable、Map接口<HashMap类、TreeMap类>)
Java的集合可以分为两种,第一种是以数组为代表的线性表,基类是Collection:第二种是以Hashtable为代表的键值对. ... 线性表,基类是Collection: 数组类: person ...
- 数据结构和算法(Java版)快速学习(线性表)
线性表的基本特征: 第一个数据元素没有前驱元素: 最后一个数据元素没有后继元素: 其余每个数据元素只有一个前驱元素和一个后继元素. 线性表按物理存储结构的不同可分为顺序表(顺序存储)和链表(链式存储) ...
- 【Java数据结构学习笔记之一】线性表的存储结构及其代码实现
应用程序后在那个的数据大致有四种基本的逻辑结构: 集合:数据元素之间只有"同属于一个集合"的关系 线性结构:数据元素之间存在一个对一个的关系 树形结构:数据元素之间存在一个对多个关 ...
- Java实现栈(链表和线性表两种方法实现)
一.栈的介绍 任何数据结构都是一种规则 栈就是在最基础的结构--线性结构和链式结构上面定义规则形成的 如果对基本数据结构(线性表和链表)有疑问的同学可以看我之前的博客:https://www.cnbl ...
- Java集合类学习笔记(各种线性表性能分析)
ArrayList.LinkedList是线性表的两种典型实现:基于数组的线性表和基于链的线性表. Queue代表了队列,Deque代表了双端队列. 一般来说,由于数组以一块连续内存区来保存所有的数组 ...
- 顺序线性表 ---- ArrayList 源码解析及实现原理分析
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7738888.html ------------------------------------ ...
随机推荐
- Shell传参的多种方式
Shell 传参的多种方式 使用$1 $2 这种类似占位符的方式 # 命令行调用 start.sh 8080 9090 # 脚本中获取 port1=$1 # 8080 port2=$2 # 9090 ...
- linux shell 基础 使用日志与心得
linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现#!/bin/bash是指此脚本使用/bin/bash来解释执行.其中,#!是一个特殊的表示符,其后,跟着解释此脚 ...
- Data Structure Binary Tree: Print ancestors of a given binary tree node without recursion
http://www.geeksforgeeks.org/print-ancestors-of-a-given-binary-tree-node-without-recursion/ #include ...
- NCL windows系统安装
http://www.doc88.com/p-192266283281.html NCL在Linux下的安装非常容易,只需下载适当版本的文件,设置好环境变量即可使用.NCL在Windows下的安装则要 ...
- P4022 [CTSC2012]熟悉的文章
题目 P4022 [CTSC2012]熟悉的文章 题目大意:多个文本串,多个匹配串,我们求\(L\),\(L\)指(匹配串中\(≥L\)长度的子串出现在文本串才为"熟悉",使得匹配 ...
- 20145210姚思羽《网络对抗技术》逆向及Bof基础实践
20145210姚思羽<网络对抗技术>逆向及Bof基础实践 实践目标 1.本次实践的对象是一个名为pwn1的linux可执行文件. 2.该程序正常执行流程是:main调用foo函数,foo ...
- EntityFramework 学习 一 Stored Procedure
CREATE PROCEDURE [dbo].[GetCoursesByStudentId] -- Add the parameters for the stored procedure here @ ...
- django admin扩展user表password验证及set_password
一般如果扩展了django user内置表,在admin后台创建新用户的时候密码将会变成明文,故而导致登录不成功.所以我们在admin.py可以通过form自定义进行对password进行操作,可以双 ...
- VS2013修改resource之后产生designer1.cs
1. Unload project2. Edit the csproj file.3. Search for <LastGenOutput>test1.Designer.cs</La ...
- web.config中httpRedirect - 重定向单个页面
例:在下面的例子中,“目录包含page1.htm,page2.htm,page3.htm和page4.htm.如下所示的web.config文件将执行以下操作/pages/page1.htm会重定向到 ...