Collection接口中定义的方法:
intsize()
获取集合容器中元素的个数
booleanisEmpty()
集合容器是否为空,即没有元素
void clear()
清空集合容器中的所有元素
boolean contains(Object element)
集合容器中是否存在某个元素
boolean add(Object element)
向集合容器中添加⼀个元素
boolean remove(Object element)
从集合容器中移除⼀个元素
boolean containsAll(Collection c)
集合容器中是否包含⼀个容器中所有的元素
boolean addAll(Collection c)
将传⼊的集合容器c中的所有元素添加到当前的集合容器
boolean removeAll(Collection c)
从当前集合容器中移除集合容器c中的所有元素
boolean retainAll(Collection c)
当前集合容器和传⼊的集合容器之间是否存在交集
Collection接⼜中定义的⽅法
Collection容器
Collection接⼜定义了存取⼀组对象的⽅法,其⼦接⼜Set和List分别定义了存储⽅式
集合框架(容器)
Object[] toArray()
将集合容器转换为⼀个对象数组
Iterator iterator()
迭代集合容器中的元素
@Test
public void test1(){
/**
* java泛型:类型参数化
*/
//创建List集合容器
List
ls.add("1");//向集合中添加元素
ls.add("2");
ls.add("3");
ls.add("4");
//通过get方法获取索引为xx的值
String test=ls.get(0);
System.out.println(test);
//for循环遍历 size获取元素的个数类似数组中的length
for(int i=0;i String element=ls.get(i); System.out.println(element); } //forEach遍历集合 for(String element:ls){ System.out.println(element); } //通过迭代器遍历集合 Iterator while(itr.hasNext()){//hasNext()获取下一个元素 String str=itr.next();//next方法得到此元素 System.out.println(str); } } @Test public void test2() { List ls.add("北京");//向集合容器中添加元素 ls.add("上海"); ls.add("广东"); ls.add("深圳"); System.out.println("删除前,元素个数是:"+ls.size()); print(ls); // ls.remove("上海"); //删除集合容器中的元素,删除“上海”这个对象 // ls.remove(2); //删除集合容器中的元素,通过元素索引(从0开始) System.out.println(ls.isEmpty());//判断集合中是否存在元素,true=不存在;false=存在 ls.clear(); //删除集合容器中的所有元素 System.out.println("删除后,元素个数是:"+ls.size()); print(ls); System.out.println(ls.isEmpty());//判断集合中是否存在元素,true=不存在;false=存在 } private void print(List System.out.println("集合调试,输出集合中的每一个元素"); for(String str : list) { System.out.println(str); } } /** * 判断一个集合中是否存在某个元素 *true=存在;false=不存在 */ @Test public void test3() { List list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); System.out.println(list.contains(9)); } @Test public void test4(){ List for(int i=1;i<=10;i++){ int x=i; list.add(x); } int totle=0; Iterator while(itr.hasNext()){ int ele=itr.next(); totle=totle+ele; System.out.println(ele); } System.out.println("总和为:"+totle); } @Test public void testt(){ List for(int i=0;i<10;i++){ int x=i; ts.add(x); } int totle=0; Iterator while(ittor.hasNext()){ int y=ittor.next(); System.out.println(y); totle=totle+y; } System.out.println("sum is"+totle); for(int x:ts){ System.out.println(x); } } List集合 List集合代表⼀个元素有序、可重复的集合,集合中每个元素都有 其对应的顺序索引。List集合允许使⽤重复元素,可以通过索引来 访问指定位置的集合元素。List集合默认按元素的添加顺序设置元 素的索引,例如第⼀次添加的元素的索引为0,第⼆次添加的元素 索引为1….以此类推 List容器中的数据对象有顺序,并且可以重复 1.add: 向List集合容器中添加元素,元素可重复添加 @Test public void test1(){ List lt=newArrayList(); lt.add("abc"); lt.add(true); //向list容器器中添加⼀一个Boolean对象 lt.add(1); // System.out.println(lt.toString()); } 2. size 获取List集合容器中元素的个数 3. get 从List集合中获取元素,返回Object 4. remove(Object obj) remove(int index) 从集合中删除元素 5 clear() 从集合中删除所有元素 6.contains(Objectobj) 集合中是否存在某个元素,返回boolean值 7.set(int index, E obj) 将index所指定位置的元素设置为obj @Test public void test1(){ List i=newArrayList();//声明List集合容器器 i.add("abc");//向list容器器中添加⼀一个String对象 i.add(true); //向list容器器中添加⼀一个Boolean对象 i.add(1); 向list容器器中添加⼀一个Integer对象 System.out.println(i.size());//获取集合中元素的个数 System.out.println(i.get(0));//获取集合中的元素,索引值从0开始 i.remove("abc"); //删除集合中的元素 i.remove(0);//删除集合中的元素,索引从0开始 i.clear(); //删除集合中所有元素 System.out.println(i.contains("abc")); } @Test public void test2(){ Student stu1 = new Student("张三", 20); Student stu2 = new Student("李四", 30); Student stu3 = new Student("王五", 40); Student stu4 = new Student("赵六", 50); Student stu5 = new Student("xxx", 60); List stus.add(stu1);// 添加学生对象 stus.add(stu2); stus.add(stu3); stus.add(stu4); stus.add(stu5); int totle = 0; for (int i = 0; i < stus.size(); i++) { Student st = stus.get(i); totle += st.getAge(); } System.out.println("总的年龄:" + totle); System.out.println("平均年龄:" + totle / stus.size()); } /** * 定义一个学生对象,属性:姓名(String)、分数(int),要求合理封装,重写toString方法描述学生信息 * 定义一个集合用于存放学生对象(注意泛型的使用),存入3个学生到集合 * 遍历集合中的元素(用标准for循环),给每个学生的分数+10分 * 遍历集合中的元素(用foreach),输出学生信息 */ @Test public void test3() { List Person stu1 = new Person("张三", 30); Person stu2 = new Person("李四", 40); Person stu3 = new Person("王五", 50); person.add(stu1); person.add(stu2); person.add(stu3); //List for(int i=0; i int score =person.get(i).getScore(); person.get(i).setScore(score+10); } for(Person stu : person) { System.out.println(stu.toString()); } } @Test public void test5() { List News news1 = new News("中国多地遭雾霾笼罩空气质量再成热议话题"); News news2 = new News("春节临近北京“卖房热”"); news.add(news1); news.add(news2); Iterator while(itr.hasNext()) { News totlenews = itr.next(); String title = totlenews.getTitle(); if(title.length() >= 15) { title = title.substring(0,14)+"..."; } totlenews.setTitle(title); System.out.println(totlenews); } } Set集合(唯一性,无序性) Set集合类似于⼀个罐⼦,程序可以把多个元素扔进罐⼦⾥,⽽Set 集合不能记住元素添加的顺序;Set集合中不允许保存相同的对象 Set容器中的数据对象没有顺序,并且不可重复 HashSet提供的常⽤⽅法: 1.add 2.size 3.iterator() @Test public void test2(){ User user1 = new User("张三", 18); iterator() 应⽤迭代器获取Set集合中所有的元素 HashSet提供的常⽤⽅法 Set Set容器中的数据对象没有顺序,并且不可重复 Collection容器 Collection接⼜定义了存取⼀组对象的⽅法,其⼦接⼜Set和List分别定义了存储⽅式 集合框架(容器) User user1 = new User("张三", 18); User user2 = new User("李四", 20); Set set = new HashSet(); //创建Set集合容器器 set.add(user1); //添加元素到集合 set.add(user2); //添加元素到集合 Iterator itr = set.iterator(); //创建迭代器器 while(itr.hasNext()){ //如果set中还有元素可以迭代,就继续查找下⼀一个元素 User u = (User) itr.next(); //获取迭代的元素对象 System.out.println(u.toString()); } } 4.remove 5. clear() 6.contains(Objectobj) //Set集合无序性,唯一性。 @Test public void test5() { Set cities.add("北京");//向set集合中添加元素 cities.add("上海"); cities.add("上海"); cities.add("广东"); cities.add("广东"); cities.add("广东"); cities.add("深圳"); /** * 通过forEach遍历set集合 */ for(String city : cities) { System.out.println(city); } } /** * 生成一个6位数的序列号,要求序列号中不能有重复的数字 */ @Test public void test6() { Set while(set.size()<=5) { int i = (int)(Math.random()*10); set.add(i); System.out.println("随机数"+i); } String sn = ""; for(int i : set) { sn += i; } System.out.println(sn); } @Test public void test2(){ Set set.add(1); set.add(4); set.add(3); System.out.println(set.size()); /*Iterator while(itr.hasNext()){ Integer i = itr.next(); System.out.println(i); }*/ } @Test public void test3(){ Set while(true){ int x=(int)(Math.random()*10); System.out.println(x); if(set.size()<5){ set.add(x); }else{ break; } } System.out.println(set.toString()); } Map集合(字典)Map容器定义了储存“键(key)——值(value)映射对”的⽅法,简称“键值对” Map⽤于保存具有映射关系的数据,因此Map集合⾥保存着两组 值,⼀组值⽤于保存Map⾥的key,另外⼀组值⽤于保存Map⾥的 value,key和value都可以是任何引⽤类型的数据。Map的key不允 许重复;key和value之间存在单项⼀对⼀关系,即通过指定的 key,总能找到唯⼀的、确定的value。从Map中取出数据时,只要 给出指定的key,就可以取出对应的value @Test public void test1() { Map map.put("2210", "沈阳市"); //向Map集合中添加元素 map.put("7910", "西安市"); map.put("2410", "长春市"); // System.out.println(map.containsKey("2210"));//在map集合中查找对应的key,true=找到了 // System.out.println(map.containsValue("沈阳市")); //在map集合中查找对应的value,true=找到了 // map.clear(); //清空map集合中的所有元素 // System.out.println(map.isEmpty()); //判断map集合中是否存在元素,true=不存在 // map.remove("2210"); //从map集合中删除记录 // System.out.println(map.get("2210"));//在map集合中根据key找到对应的value,找到了返回value的值,找不到返回null // System.out.println(map.size()); //获得map集合的记录条数 /** * 通过keySet遍历map集合 */ Set for(String k : ks) { System.out.println("key="+k); System.out.println("value="+map.get(k)); } System.out.println("*****************"); /** * 通过Entry对象遍历map集合 */ Set for(Entry if(en.getKey().equals("2410")) { en.setValue("上海市");//给记录设置value值 } System.out.println("key="+en.getKey());//获取Entry对象的key值 System.out.println("value="+en.getValue());//获取Entry对象的value值 } } @Test public void test4(){ Map map.put("no1", "bj"); map.put("no2", "sh"); map.put("no3", "gz"); map.put("no4", null); map.put(null,"bj"); System.out.println(map.get("no1")); Set Iterator while(ks.hasNext()){ String key = ks.next(); String value = map.get(key); System.out.println(key+value); } System.out.println("###########"); for(String key:set){//Set String value=map.get(key); System.out.println(key+value); } } @Test public void test5(){ Map map.put("no1", "bj"); map.put("no2", "sh"); map.put("no3", "gz"); map.put("no4", null); map.put(null,"bj"); Set Iterator while(ks.hasNext()){ Entry String key = ey.getKey(); String value = ey.getValue(); System.out.println(key+value); } System.out.println("**********"); for(Entry System.out.println(en.getKey()+en.getValue()); } } Map提供的常⽤⽅法: put(Object key, Object value) 向Map集合中添加⼀条记录,记录是以键值对的形式存放的 Object get(Object key) 从Map集合中通过key来获取value Set keySet() 获取map集合中所有的key Set entrySet() 获取Map集合中所有的记录(key-value对象Entry) Collections⼯具类: 集合⼯具类,针对于Set和List集合提供⼀系列功能的操作 1.sort(Collectionc) 按照⾃然顺序升序排序 2.Object max(Collection c) 获取c集合容器中的最⼤值 3.Object min(Collection c) 获取c集合容器中的最⼩值 4.boolean replaceAll(Collection c, Object oldVal, Object newVale) 将c容器中的oldVal替换成newVal @Test public void test6(){ List list.add(7); list.add(45); list.add(23); list.add(78); System.out.println(list.toString()); Collections.sort(list); System.out.println(list.toString()); System.out.println(Collections.max(list)); System.out.println(Collections.min(list)); Collections.replaceAll(list, 45, 888); System.out.println(list.toString()); } 案例:给对象进⾏排序 ⽤户类中包含姓名和年龄属性,要求给多个⽤户按照年龄进⾏ 排序 packaget3; publicclass User implements Comparable privateString name; privateint age; @Override public int compareTo(User o) { if(this.age > o.getAge()) { return1; }else{ return-1; } } publicUser(String name, int age) { this.name= name; this.age= age; } publicString getName() { returnname; } publicvoid setName(String name) { this.name= name; } publicint getAge() { returnage; } publicvoid setAge(int age) { this.age= age; } } 2、在测试类中调⽤Collections集合的sort⽅法对集合进⾏排 序 List list.add(newUser(“张三”,89)); list.add(newUser(“李四”, 66)); list.add(newUser(“王五”,90)); list.add(newUser(“赵六”,12)); Collections.sort(list);//对⽤用户集合进⾏行行排序 泛型 泛型是指“类型参数化”,使⽤泛型可以屏蔽程序在运⾏时的类型 转换异常,减少强制类型转换的使⽤,并且可以让异常在编译期 暴露出来 E set(int index, E obj) 将index所指定位置的元素设置为obj E get(int index) 返回指定索引处存储的对象 E set(int index, E obj) 将index所指定位置的元素设置为obj E get(int index) 返回指定索引处存储的对象