目录
一、String、StringBuffer、StringBuilder
一、String、StringBuffer、StringBuilder
(1)String:字符串常量,一旦创建便不能更改,运行速度慢。
(2)StringBuffer:字符串变量,线程安全,速度快,适合多线程字符缓冲区大量操作。
(3)StringBuilder:字符串变量,线程不安全,速度最快,适合单线程大量操作。
操作
public class TestString {
public static void main(String[] args) {
testString();
testStringBuilder();
}
public static void testString(){
String string = "java-";
/*
* 使用+连接产生新的字符串,但实际上string并没有被修改,
* jvm创建了一个新的string,回收了原来的string
* 所以速度慢
*/
string = string + "project";
System.out.println(string);
}
public static void testStringBuilder(){
StringBuilder sb = new StringBuilder();
//由于StringBUilder是可变的,所以不会进行创建和回收,速度快
sb.append("java-").append("project");
System.out.println(sb.toString());
}
}
二、集合和数组
1.区别
数组:长度固定,可以存储基本数据类型和引用数据类型,数组里的元素必须是同一数据类型。
集合:长度可变,只能存储引用数据类型,集合里的元素可以是不同数据类型。
2.操作
public static void testArray(){
String[] strArray = {"java","C++","PHP","python"};
//数组转换成集合
List<String> list = Arrays.asList(strArray);
System.out.println(list);
}
public static void testList(){
List<String> list = new ArrayList<String>();
for(int i=0;i<4;i++){
list.add("java"+i);
}
//集合转换成数组
Object[] strArray = list.toArray();
System.out.println(Arrays.toString(strArray));
}
}
三、Collection接口
1.List
ArrayList和LinkedList
分析:(1)ArrayList实现了基于动态数组的数据结构,LinkedList是基于链表的结构。
(2)进行查操作时ArrayList优于LinkedList,因为LinkedList 需要移动指针。
(3)进行增删操作时,LinkedList优于ArrayList,因为ArrayList 需要移动数据。
2.Set
HashSet和TreeSet
分析:(1)List和Map有序,Set无序。
(2)Set的元素是唯一的,Map的key是唯一的。
(3)Set适合经常追加随机数据,插入,删除,但是遍历效率低。
四、Iterator接口
1.分析:Iterator接口主要用来遍历集合中的元素,故被称为迭代器。
2.主要方法: hasNext():如果被迭代的集合,元素还有没被遍历完,则返回true。
next():返回集合里下一个元素。
remove():删除集合里上一次next方法返回的元素。
3.测试
public class TestIterator {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("java");
list.add("php");
list.add("C++");
list.add("python");
Iterator<String> iterator = list.iterator();
//遍历
while(iterator.hasNext()){
String string = iterator.next();
//删除C++
if(string.equals("C++")){
iterator.remove();
}
}
System.out.println(list);
}
}
4.结果
[java, php, python]
五、Map集合
HashMap和TreeMap
map遍历
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<Integer,String>();
map.put(1, "Daniel");
map.put(2, "Peter");
map.put(3, "Herry");
//keySet遍历map
Iterator<Integer> iterator = map.keySet().iterator();
System.out.println("keyset遍历(将Map中所有的键存入到set集合)");
while(iterator.hasNext()){
int key = iterator.next();
System.out.println(key+"---"+map.get(key));
}
//Entry遍历
Iterator<Entry<Integer,String>> iterator2 = map.entrySet().iterator();
System.out.println("entryset遍历(将Map中所有的映射关系存入到set集合)");
while(iterator2.hasNext()){
Entry entry = iterator2.next();
System.out.println(entry.getKey()+"---"+entry.getValue());
}
}
结果
注:参考文章点击打开链接