分析String、Collection、Iterator、Map、Comparable、Comparator

目录

一、String、StringBuffer、StringBuilder

二、集合和数组

三、Collection接口

四、Iterator接口

五、Map集合

HashMap和TreeMap

 



一、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());
		}
	}

  结果

 

注:参考文章点击打开链接    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值