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 ------------------------------------ ...
随机推荐
- 让input表单输入框不记录输入过信息的方法
有过表单设计经验的朋友肯定知道,当我们在浏览器中输入表单信息的时候,往往input文本输入框会记录下之前提交表单的信息,以后每次只要双击input文本输入框就会出现之前输入的文本,这样有时会觉得比较方 ...
- html5 说明
# 客户端储存历程 远古时期 cookies的用法和缺陷 userdata HTML5时代 localstorage application cache 离线缓存 indexedeDB 客户端数据 ...
- Data Structure Stack: Reverse a stack using recursion
http://www.geeksforgeeks.org/reverse-a-stack-using-recursion/ #include <iostream> #include < ...
- python 3 mysql sql逻辑查询语句执行顺序
python 3 mysql sql逻辑查询语句执行顺序 一 .SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_t ...
- python 3 mysql 单表查询
python 3 mysql 单表查询 1.准备表 company.employee 员工id id int 姓名 emp_name varchar 性别 sex enum 年龄 age int 入职 ...
- Python3 logging 模块
Python3 logging模块 日志模块: 用于便捷记录日志且线程安全的模块 CRITICAL = 50 FATAL = CRITICAL ERROR = 40 WARNING = 30 WARN ...
- 优化chkconfig
只保留系统服务: crond /network /sshd /rsyslog /sysstat 其他服务全部关闭 首先将所有 3:on的服务名过滤出来,然后 grep -vE 排除需要的服务 #!/b ...
- Spring Cloud之Hystrix雪崩效应解决方案
基于Hystris解决雪崩效应: 1.服务降级: 防止用户一直等待,使用降级方式,调用FallBack(返回友好提示,不会去处理请求) 案例: 当前请求人数过多,请稍后重试 2.服务熔断:(和服 ...
- 算法(Algorithms)第4版 练习 2.2.9
package com.qiusongde; import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut; publi ...
- Shiro-自定义realm
Shiro自定义 realm package com.zhen.realm; import org.apache.shiro.authc.AuthenticationException; import ...