String,List,迭代,set

来源:互联网 发布:网络视频监控 编辑:程序博客网 时间:2024/06/06 10:50
String

public final class String
字符串是常量;它们的值在创建之后不能更改

字符串串联(+)是通过StringBuilder(或StringBuffer)类及其append 方法实现的。

String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'}; String str = new String(data);
String a2 = "Hello";
String a3 = "Hello";
在系统中,一旦a2被定义同时,对象值为Hello。
* 那么如果这个对象没有被释放,那么下次再去
* 定义这个Hello的时候,肯定是使用相同内存地址。
因此,a2和a3同时指向一个内存空间。
System.out.println( a2 == a3 );//true
  System.out.println( a2.equals( a3 ) );//true

String a2 = "Hello";
  String a3 = "Hello";
  a3 = "Hello1";//a3指向新对象
System.out.println( a2 == a3 );//false
  System.out.println( a2.equals( a3 ) );//false

String q1 = "Hello";
  String q2 = new String( q1 );

  System.out.println( q1 == q2 );
  System.out.println( q1.equals( q2 ) );

String c = new String("10");
这句话的意思是实际上,相当于是2个对象在右侧。
String a = "10";
new String( a );

String比较常用的方法:
String(char[] value, int offset, int count) 
分配一个新的 String,它包含取自字符数组参数一个子数组的字符。
offset:起始位置,count:长度
char[] a1 = {'整','型','比','d','e','f'};
String d = new String( a1 , 2 , 2 );

charAt(int index) :返回指定索引处的 char 值。
等价于:substring(index,index+1)

length() :返回字符串的长度

intcompareTo(String anotherString):A.compareTo( B )
比较两个A和B字符串的字典顺序
如果A>B 输出大于0,
如果A==B 输出等于0
如果A<B 输出小于0

compareToIgnoreCase :忽略大小写比较

startsWiths(String prefix, [int toffset] ):只是返回以某个字符串为前缀是否存在。
prefix - 前缀。
toffset - 在此字符串中开始查找的位置

String replaceAll(String regex, String replacement)
: 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串
regex - 用来匹配此字符串的正则表达式
replacement - 用来替换每个匹配项的字符串
String setReplaceWords( String contents ){
  String[] deepWords = {"台独","贩毒","吸毒"};
 
  for( int i = 0 ; i < deepWords.length; i++ ){  
 contents = contents.replaceAll( deepWords[i], setRepatRing( deepWords[i].length() ) );
  }
  return contents;
 }
 
String[]split(String regex, int limit) :根据匹配给定的正则表达式来拆分此字符串。
substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串的一个子字符串。
beginIndex- 起始索引(包括)。
endIndex- 结束索引(不包括)。
StringtoLowerCase() :使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
toUpperCase() :使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
toString() :返回此对象本身(它已经是一个字符串!)。
Stringtrim() : 返回字符串的副本,忽略前导空白和尾部空白。
staticString valueOf(int i) :返回 int 参数的字符串表示形式。
int indexOf(int ch) :返回指定字符在此字符串中第一次出现处的索引。
char[] toCharArray():将此字符串转换为一个新的字符数组。

char x = (char)65 ;
System.out.println(x);//A
int x = 'a' ;
System.out.println(x);//97

说明当字符和int可以互相转换,并且以ASCII码进行转换


StringBuffer 适应多线程安全的字符串。
1、执行速度较慢。
2、相对安全。
例:可以用在自动补足剩下的字符串或自动删除多余的字符
StringBuilder适应于非多线程的字符串。
1、执行速度快。
2、相对不安全。
append 追加字符串
delete 删除字符串


List :可看作是可以改变的数组
下面的三种形式最大的区别是在内存中的数据结构

ArrayList 数据结构为:数组形式
初始容量为10,容量不够时,自动加5
不安全,不同步,速度快
查询,修改速度快,插入慢(插入位置之后的都要往后移),删除慢,
        
索引:0 1 2 3 4
数组中一般存放的是对象的引用

1、增 add
2、删 remove, removeAll, clear
3、查 get contains indexOf isEmpty() size
4、改 set

public booleancontains(Object o)
public booleanremoveAll(Collection<?> c)

LinkedList数据结构为:链表形式
只需要知道前面后后面的是什么
不安全,不同步,
查询速度慢(要顺序往下查询),修改速度慢(与查询同理),插入,删除速度快
-增 add() addAll() addFirst() addLast()
offer() offerFirst() offerLast()
push() //在尾部加入一个数据
-删 remove() clear() pop() //在尾部提出一个数据 removeFirst()
removeLast()
-查 contains() get() getFirst() getLast() indexOf() lastIndexOf()
//获取列表头不移除第一个/最后一个元素
peek() peekFirst() peekLast()
//获取不包括第一个元素的列表、获取不包括最后一个元素的列表
poll() pollFirst() pollLast()
size()
-改 set()

Vector 数据结构为:数组形式存在 。
安全,同步,速度慢
初始容量10,每次加10
Java 枚举, 迭代的前身。

subList(a , b) 获取某一段的列表值。开始截取的位置,结束截取的位置。

迭代 Iterator
就是把集合中的数据一个个取出
Iterator<Object> ter = list.iterator();
//如果仍有元素,继续迭代。用while写法
while( ter.hasNext() ){
System.out.println( ter.next() );
}
//for作用于for局部,即用完以后释放内存。推荐使用
for( Iterator<Object> ter1 = list.iterator();
ter1.hasNext(); ){
System.out.println( ter1.next() );
}

set
一组无序的集合,
HashSet根据哈希值排序
无序,添加不重复,查找时通常和迭代器一起用
在HashSet内部是不允许添加重复数据。如果有,则不会添加,并且返回false

-增 add()
-删 remove() clear()
-查 size() contains();
-改 因为没有索引,所有东西要么删除 要么添加


LinkedHashSet :
TreeSet
不重复
树结构排序,"有序"
按照平衡二叉树排序
(接近ASCII排序)
//根据自然排序(树的形式),支持SortedSet排序
查询速度较慢





0 0