java面向对象第八天( -集合--Collection--)

1.将数组转换成字符串

 char [] arrays ={'a','b','v'};  
 System.out.println( Arrays.toString(arrays));    //将数组转化成字符串,结果[a,b,v]

String string2= new String(arrays); //将数组转换成字符串;结果 abv;
Arrays.toString(arrays));

2.创建一个数组 保存三个学生;遍历学生信息;

//创建一个数组保存学生;
 Student array = new Student[3];
 array[0]= new Student("张三","17")
 array[1]= new Student("李四","18")
 array[2]= new Student("王二","19")
 for (int i=0 ;i<array.length;i++){
        //遍历数组;将对象转换成字符串;
   System.out.println(array[i].toString)
//打印结果Student [name=坤, age=20]
         Student [name=的, age=22]
         Student [name=到, age=23]
         是字符串;

//另外一种遍历对象数组的方法;
  for(Student student : array){
       sout(student)
 //第一位类型;第二位 参数 ;第三位这个数组
 }
}

3.关于collection介绍

定义:   collection是个接口 (  常用作集合用  );它下面有两个子接口分别为

        1.  List                          2 .  set

 其中: List 是有序可重复集       set是无序可重复集;

List 又分成三类  1.  ArrayList      2 . LinkList   3. Vector

ArraysList:  内部是由数组实现的,适合查询.

LinkList:     内部是由链表实现,适合增删改.


set  分为 1.  HashSet     2. treeSet

HashSet      是二叉树.有序的.

TreeSet       采用散列存储.

position: collection是集合的接口,collection是集合的工具类

扫描二维码关注公众号,回复: 1742346 查看本文章


 3.1 collection 集合常用的方法;

      1.首先看看ArrayList的类是怎样实现colloction; 使用多态进行创建;

             1.        .add(元素); //往集合中添加元素;
             2.       .size( 元素) : //判断集合中元素的个数;

             3.       .contain(元素)  : //判断集合是否包含该元素;

             4.      .remove(移除); //删除某一个元素;

             5.       .is.Empty(); //   判断是否为空;

             6.       .toArray(); //集合转数组;返回的是基类的类型;

             7 .      .clear();    //清空数组;   

             8 .      c1.retainAll(c2) // 求交集  谁调用的方法,交集在谁里面,如果这个谁发生变化,返回值就是true;

             9.       removeAll()   //删除的是调用的集合里面两个集合的交集;

             10.      c1.add(c2);    //将c2作为c1集合里面的一个元素,添加

             11.     c1.addAll(c2);  // 将c2的每一个元素都作为c1的元素添加进去;

//使用多态进行创建;
 Collection collection =new ArrayList;
//对象.add("元素");往集合里面添加元素;添加完成以后,判断集合中是否有元素,返回是boolean;
boolean add = collection.add("a");
boolean add = collection.add("b");
boolean add = collection.add("c");
System.out.println(collection);//打印结果是[a, b, c]的对象;
//当你直接往几何中存入基本数据类型的时候,系统会自动帮你封装;
 
  
		// 当你直接向集合中存储基本数据类型时候,
		// 系统帮你自动装箱;
		// 设计思想: 返回值使用需要能够适用下面的所有子接口;
		// Set集合是有可能添加失败的,
		boolean add3 = collection.add(10);// 如果d换成10 / false
		System.out.println(collection);

		// 获取元素个数
		//System.out.println(collection);// 重写toString;
		//System.out.println(collection.size());

		// 判断包含;里面的元素;
		boolean rel1 = collection.contains("a");
		//System.out.println(rel1);

		// 删除某一个元素; 直接object来接受;
		boolean rel2 = collection.remove("b");
		//System.out.println(rel2);
		//System.out.println(collection);

		// 判断是否为空;
		boolean rel3 = collection.isEmpty();
		//System.out.println(rel3);

		// 集合转数组(返回的是基类的类型)
		Object[] array = collection.toArray();
		for (Object object : array) {
			//System.out.println(object);
		}

		// 清空数组;
	    collection.clear();
		//System.out.println(collection);
@SuppressWarnings({ "unchecked", "rawtypes" })
	public static void main(String[] args) {
		Collection c1 = new ArrayList();
		c1.add("a");
		c1.add("b");
		c1.add("c");
		c1.add("d");		
		Collection c2 = new ArrayList();
		c2.add("a");
		c2.add("b");
		c2.add("c");
		c2.add("d");
		//add和addAll(c1, c2);
		//removeAll移除相同(c1, c2);
		
		//retainAll
		//谁调的方法,交集在谁里面,这个谁(调用)如果发生变化,返回的就是true;?true:
		boolean rel = c1.retainAll(c2);
		System.out.println(rel);
		System.out.println(c1);
		System.out.println(c2);

	}

	private static void removeAll移除相同(Collection c1, Collection c2) {
		//2.  removeAll
		//删除的是调用集合的元素,元素指的是两个集合的交集;
		boolean rel = c1.removeAll(c2);
		System.out.println(c1);
		System.out.println(c2);
		System.out.println(rel);
	}

	private static void add和addAll(Collection c1, Collection c2) {
		// 添加方法;
		// 把c2当做一个元素添加到c1中;
		// c1.add(c2);
		// System.out.println(c1);//结果[a, b, c, d, [a, b, c, d]]

		// addall把c2的每个元素添加到c1中,元素可以重复;
		c1.addAll(c2);
		System.out.println(c1);
	}

4.迭代器(Iterator)

     1. 迭代器其实就是指针,读取自核或者数组里面的一个值,读完以后又指向吓一跳数据.
     2.迭代器在遍历.时候效率比较高;
 例如: 迭代器遍历集合中的每一元素
//迭代通俗的将就是一个一个来
Collection c = new ArrayList();
 c.add("a");
 c.add("b");
 Iterator iterator = c.iterator; //调用迭代器方法,返回的是迭代器类型;
 while(iterator.hasNext){//如果集合中有下一个元素执行该条语句;
 Object next = iterator.next(); //数到什么就拿出来然后赋值给next;
 System.out.println("next");   //打印一下;

}

5.List 接口是ArraysList和LinkedList 的父类

LIst特有的方法:

     1.添加:  list.add(2,"x")// 前一位参数添加位置,不能超过集合的size;后一位是添加的元素;

     2.设置: list.set(0,"w")//替换前一位参数位置的元素;不能超过结合size;

     3.获取: list.get(0)    //从下标处取出相应的元素,由于你不知道取出来是啥类型,所以用objiect接收;可以用来遍历集合;

     4.删除: list.remove(index);//返回的是被删除的元素;

private static void list方法() {
		List list = new ArrayList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		// 添加
		// list.add(2,"x"); //不能超出集合的元素个数 size;
		// System.out.println(list);

		// 设置
		// list.set(0, "w");//如果填4,会报错位置超了;
		// 替换该位置的元素;
		// System.out.println(list);

		// 获取下表处的元素 因为不知道你从集合里面取出来什么元素,所以一律是object;
		Object object = list.get(0);
		// System.out.println(object);

		// 删除; 返回的是删除的元素;
		Object remove = list.remove(0);
		System.out.println(remove);

		// 利用get方法遍历集合;
		for (int i = 0; i < list.size(); i++) {
			// 打印元素
			// System.out.println(list.get(i));

 5.1 Vetor接口 : 应用:快速枚举器          

Vector vector = new Vector();
 Vector.add("a");
 Vector.add("b");
//遍历这个集合 获取快速枚举器;
 Enumeration elements = vector.elements();
while(elements.hasMoreElements){
      System.out.println(elements.nextElement());
}

6.ArraysList 和LinkList区别是什么?

  ArraysList :查询块,增删慢,数组实现的; 数组是一块连续的空间;

 LinkList:  查询慢,增删块,链表实现的;



猜你喜欢

转载自blog.csdn.net/a18755425397/article/details/80369115
今日推荐