⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java7.txt

📁 达内IT培训Core Java全部笔记 是学习Java编程的好东西
💻 TXT
字号:
sd 0804 Javaday7   2008年6月18日集合:corejava中常用的1.String/StringBuffer2. 集合容器集合就是存放对象的对象(对象容器)集合不能放基本类型,但可以放封装类数组和集合的差别:数组:	1. 长度不可变(固定)	2.数组只支持单类型的元素集合框架:	1.接口:定义了方法的框架	2.子类:方法的具体实现	3.方法所有的集合框架在java.util包里集合包括collection(集合接口)和map(映射)List:有放入顺序(会记录进入顺序),允许重复元素的集合set:无放入顺序,不允许重复元素map:以键值对的方式去存放元素(两个对应的元素key和value),无放入顺序,key不允许重复,value允许重复所有集合长度都是可变的四种存放方式:数组,List,Set,Map1.年龄(数组)2.同学(List)3.姓名(Set)4.一个同学的信息(Map)1.所有linked打头的底层基于链表,特点:增删快,查找慢2.ArrayList(JDK1.3之后)和Vector	ArrayList:高效,不能直接支持并行操作(StringBuffer,StringBuilder),要进行中间处理	Vector:低效,能直接支持并行操作3.HashMap和Hashtable的区别	HashMap:高效,不支持并行操作,允许空值	Hashtable:低效,支持并行,不允许空值(key和value都不能为空)增加:add/addAll删除:clear()/remove()/removeAll()取:get()查找:indexof()元素个数:size()List:	设置:setXXX	取出:getXXX	增加:addXXX,insertXXX,appendXXX,putXXX	删除:removeXXX,deleteXXX泛型:在类名后面写上<类型>,如 List<String> list = new ArrayList<String>();--------------------------------------------------------------------------package com.tarena.day07.list;import java.util.List;import java.util.ArrayList;public class TestList {	public static void main(String[] args) {		List<String> list = new ArrayList<String>();		//多态,泛型(5.0新特性)		list.add("one");		list.add("two");		//list.add(3);	//实际加入的是Integer,自动装箱		list.add("four");		list.remove(1);		for (int i = 0; i < list.size(); i++) {			//Object obj = list.get(i); //多态,如果用泛型则不用这句			String obj = list.get(i);			System.out.println(obj);	//多态+重写		}	}}--------------------------------------------------------------------------Capacity:--------------------------------------------------------------------------package com.tarena.day07.list;import java.util.ArrayList;import java.util.List;public class TestCapacity {	public static void main(String[] args) {		List<String> list = new ArrayList<String>(100000);		String temp = "abc";		long start = System.currentTimeMillis();		for (int i = 0; i < 100000; i++) {			list.add(temp);		}		long end = System.currentTimeMillis();		System.out.println(end-start);	}}--------------------------------------------------------------------------set只能借助迭代器取出set:	增加:add/addAll	删除:remove/clear	取出:iterator()->Iterator			while(.hasnext()){	.next()}set也支持泛型--------------------------------------------------------------------------package com.tarena.day07.set;import java.util.HashSet;//import java.util.Iterator;import java.util.Set;public class TestSet {	public static void main(String[] args) {		Set<String> set = new HashSet<String>();		set.add("one");		set.add("two");		set.add("three");		set.add("three");		set.add("four");		for(String s : set){		//只有5.0才支持,6.0都不支持,底层基于迭代器实现,所有的集合和数组都支持,取代下面的代码			System.out.println(s);		}//		Iterator<String> it = set.iterator();//		while(it.hasNext()){//			String obj = it.next();//			System.out.println(obj);//		}	}}输出结果:twoonethreefour--------------------------------------------------------------------------5.0新引入的循环,只有5.0支持:	for each循环	for(元素类型 变量名:集合或数组的对象){	直接使用变量名.	}	底层还是由迭代器实现HashSet()          构造一个新的空集合,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。 	加载因子实际上就是当元素到了16*0.75的大小时就会扩容,扩容的时候大部分是以2倍大小HashSet如何判定重复?1.先判断HashCode()2.判断equals()--------------------------------------------------------------------------package com.tarena.day07.set;public class Person {	private int id;	private String name;	@Override	public int hashCode(){		System.out.println("hash" + id);		return id;	}	@Override	public boolean equals(Object obj){		if(obj==null){			return false;		}else if(obj instanceof Person){			Person p = (Person)obj;			System.out.println("equals" + id);			return this.id == p.id;//			return true;		}		return false;	}	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}}--------------------------------------------------------------------------package com.tarena.day07.set;import java.util.HashSet;import java.util.Set;public class Test {	public static void main(String[] args) {		Set<Person> set = new HashSet<Person>();		Person p1 = new Person();		p1.setId(1);		p1.setName("zhang");		Person p2 = new Person();		p2.setId(2);		Person p3 = new Person();		p3.setId(3);		Person p4 = new Person();		p4.setId(1);		set.add(p1);		set.add(p2);		set.add(p3);				set.add(p4);		System.out.println(set);//输出的时候会调用toString,也会调用hashCode		for (Person p : set) {			System.out.println(p.getName());		}	}}输出结果:hash1hash2hash3hash1equals1hash1hash2hash3[com.tarena.day07.set.Person@1, com.tarena.day07.set.Person@2, com.tarena.day07.set.Person@3]zhangnullnull--------------------------------------------------------------------------SortedSet	可排序,不代表放入顺序,是按算法排序ArrayList:基于数组HashSet:基于HashMap,Hash算法TreeSet:基于二叉树--------------------------------------------------------------------------package com.tarena.day07.set;import java.util.TreeSet;public class TestTreeSet {	public static void main(String[] args) {		TreeSet<Integer> ts = new TreeSet<Integer>();		ts.add(5);		ts.add(3);		ts.add(14);		ts.add(8);		ts.add(14);	//同一元素在TreeSet中只允许有一个		for (Integer i : ts) {			System.out.println(i);		}	}}输出结果:35814--------------------------------------------------------------------------Compare:--------------------------------------------------------------------------package com.tarena.day07.set;public class Student implements Comparable{	private int id;	private String name;	@Override	public int hashCode(){			//证明TreeSet和HashCode无关		System.out.println("aaa");		return super.hashCode();	}	public int compareTo(Object obj){		System.out.println(this.id);		if(obj!=null && obj instanceof Student){			Student s1 = (Student)obj;			return this.id-s1.id;		}		return 0;	}	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}}--------------------------------------------------------------------------package com.tarena.day07.set;import java.util.TreeSet;public class TestCompare {	public static void main(String[] args) {		TreeSet<Student> ts = new TreeSet<Student>();		Student s1 = new Student();	//Student是不可比较的,但是第一个不用比较,所以能放进去,但是第二个就放不进去了		s1.setId(1);		s1.setName("zhang");		Student s2 = new Student();		s2.setId(2);		Student s3 = new Student();		s3.setId(3);		Student s4 = new Student();		s4.setId(1);		ts.add(s1);		ts.add(s2);		ts.add(s3);		ts.add(s4);		for (Student s : ts) {			System.out.println(s.getId() + s.getName());		}			}}输出结果:233111zhang2null3null--------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -