2020-08-18

第十三次课
一.
package com.hpe.collections;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.hpe.set.Person;

/**

  • Collection 接口
  • Collections 操作集合的工具类 (set list map)
  • @author Administrator

*/
public class Demo1 {
public static void main(String[] args) {
List list = new ArrayList();
list.add(“zhang”);
list.add(“tom”);
list.add(“lii”);
list.add(“tom”);
// Collections 反转元素顺序
Collections.reverse(list);
System.out.println(list);
// shuffle 随机排序,打乱原来的顺序
Collections.shuffle(list);
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
// 如果是一个对象的,person如何排序。

	// sort排序
	Collections.sort(list);
	System.out.println(list);

	// swap 交互
	Collections.swap(list, 0, 3);
	System.out.println(list);
	// 获取元素出现 次数 frequency
	int count = Collections.frequency(list,"tom");
	System.out.println("tom count=" + count);
	
	List<Person> persList = new ArrayList<Person>();
	Person p1 = new Person();
	p1.setAge(20);
	p1.setName("zhangsan");

	Person p2 = new Person();
	p2.setAge(20);
	p2.setName("zhangsan");

	Person p3 = new Person();
	p3.setAge(22);
	p3.setName("lisi");
	
	persList.add(p1);
	persList.add(p2);
	persList.add(p3);
	// 反转
	Collections.reverse(persList);
	System.out.println(persList);//  [Person@3234f,Person@dfsf234]
	for (Person person : persList) {
		System.out.print(person.getName() + " ");
	}
	// 排序
	// Collections.sort(persList);

// / 随机
Collections.shuffle(persList);
for (Person person : persList) {
System.out.print(person.getName() + " ");
}

}

}
二.
package com.hpe.collections;

import java.util.*;

/**

  • 把数组转化为ArrayList
  • 或把ArrayList转化数组
  • Arrays是数组的工具类
  • @author Administrator

*/
public class Demo2 {
public static void main(String[] args) {
// 空容器(ArrayList),遍历数组并赋值。
List list = new ArrayList();
// 把list转化为数组
list.toArray();

	int[] ii = new int[2];
	int[] iii = new int[] {2,2,2};
	int[] uiii = {2,2,2};
	List list1 = Arrays.asList(2,2,2,3,4,5,7,8,9,0,4);
	List list2 = Arrays.asList(ii,ii,ii,iii,uiii);
	
	System.out.println(list1);
	System.out.println(list2);
	
	
	sumArray(0,1,2,3,4,5,6,7,8,90,7);
	sumArray(0,new int[]{1,2,3});
}
public static int sumArray(int num,int... args) {
	for(int i = 0;i < args.length;i ++) {
		num += args[i];
	}
	return num;
}

public static int sumArray(int num,int[] args,boolean flag) {
	for(int i = 0;i < args.length;i ++) {
		num += args[i];
	}
	return num;
}

}
另一个文件
一.
package com.hpe.iter;

import java.util.*;

import com.hpe.set.Person;

/**

  • 迭代器的使用,遍历 集合框架。
  • @author Administrator

*/
public class TestIterator {
public static void main(String[] args) {
List personList = new ArrayList();
// 创建人类
Person p1 = new Person();
p1.setAge(20);
p1.setName(“zhangsan”);

	Person p2 = new Person();
	p2.setAge(20);
	p2.setName("zhangsan");

	Person p3 = new Person();
	p3.setAge(22);
	p3.setName("lisi");

	personList.add(p1);
	personList.add(p2);
	personList.add(p3);
	
	// 获取迭代器
	Iterator<Person> iterator = personList.iterator();
	// hasNext next
	for (int i = 0; i < personList.size(); i++) {
		Person tmpPerson = personList.get(i);
	}

	for (; iterator.hasNext();) {
		Person p = iterator.next();
		System.out.println(p.getName());
	}
	while(iterator.hasNext()) {
		Person p = iterator.next();
		System.out.println(p.getName());
	}
	
	// 迭代器使用1 personList
	for (Iterator iterator2 = personList.iterator(); iterator2.hasNext();) {
		Person person = (Person) iterator2.next();
		
	}
	// 增强for循环 ,前提需要指定容器类型 (泛型) 
	for (Person person : personList) {
		
	}
	
	// set容器的遍历 。
	Set<Person> personSet = new HashSet<Person>();
	personSet.add(p1);
	personSet.add(p2);
	personSet.add(p3);

	for(int y = 0;y < personSet.size();y ++) {
		//personSet.get(y);  // set 没有get(位置)方法
		// 不适用 set容器的。
	}

	Iterator iter = personSet.iterator();		
	// hasNext next  方法       (  for while)
	
	for (Person tmpPerson : personSet) {
		System.out.println(tmpPerson.getName() + " " + tmpPerson.getAge());
	}
	
	
	String tmpPerson = null;
	System.out.println("end");
	
	
	

	
	
	
	
	
	
}

}
另一个文件
一.
package com.hpe.list;

import java.util.*;

/**

  • List
  • 1、list是collection的子接口。
  • 2、ArrayList 是list的实现类
  • @author Administrator

*/
public class Demo1 {
public static void main(String[] args) {
int[] ii = new int[10];
ii[0]= 1;
// 创建一个连续可变长度的数组。
List list = new ArrayList();

	// 添加元素 。
	list.add(1);  // Integer
	list.add("abc");
	list.add(new Demo1());
	// 通过指定位置获取元素
	Object o = list.get(1);
	System.out.println(o);
	Object demo1 = list.get(2);
	
	// 泛型 ,指定类型 Integer, String ,Persson
	LinkedList<Integer> intList = new LinkedList<Integer>();  // int可变长度的数组
	intList.add(123);
	intList.add(456);
	System.out.println(intList.get(0));
	System.out.println(" intList.indexOf(456) :" + intList.indexOf(456));
	//在list最前面,放置一个元素。
	intList.add(0, 123);  // 可重复的。
	// 获取 456位置信息
	int index = intList.indexOf(456);
	System.out.println(index);
	intList.addFirst(123);
	
	
}

}
另一个文件夹
一.
package com.hpe.set;

import java.util.*;

/**

  • set接口
  • HashSet 实现类
  • @author Administrator

*/
public class Demo1 {
public static void main(String[] args) {
// 容器: 无序,不可重复的。
Set set = new HashSet();

	Demo1 demo1 = new Demo1();
	
	set.add(1);  //  Integer(1);
	set.add("abc");
	set.add(new Demo1());   // Demo1@1234f
	set.add(1); //  已有重复数据,添加失败。      
	set.add(new Demo1());   // Demo1@234d3
	set.add(demo1);
	set.add(demo1);
	System.out.println(set.size()); // 3  -- 4  ---5  --- 5
	set.remove("abc");
	
	
	// 模拟 人类的容器封装
	Set<Person> perSet = new HashSet<Person>();
	// 创建人类
	Person p1 = new Person();
	p1.setAge(20);
	p1.setName("zhangsan");
	
	Person p2 = new Person();
	p2.setAge(20);
	p2.setName("zhangsan");
	
	Person p3 = new Person();
	p3.setAge(22);
	p3.setName("lisi");

	perSet.add(p1);
	perSet.add(p2);
	perSet.add(p3);
	System.out.println(perSet.size()); // 3  --- 2
	// perSet在容器中,自动识别出重复人(信息相同)。
	// 重写实体类的,equals方法和hashcode方法。
	System.out.println(perSet.size()); // 2
	
	// 移除数据
	/*Person p4 = new Person();
	p4.setAge(22);
	p4.setName("lisi");
	
	perSet.remove(p4);
	*/
	
	perSet.remove(p3);
	
}

}
二.
package com.hpe.set;

/**

  • 实体类,测试set容器的不可重复
  • @author Administrator

*/
public class Person {
private String name;
private int age;

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public int getAge() {
	return age;
}

public void setAge(int age) {
	this.age = age;
}

@Override
public boolean equals(Object obj) {
	//  obj  this 
	if(obj == this) {
		return true;
	}
	if(obj == null) {
		return false;
	}
	Person p = (Person)obj;

	if(p.getName().equals(this.getName()) && p.getAge() == this.getAge()) {
		return true;
	}
	
	return false;
}

//@Override
public int hashCode1() {
	int fl = 12;
	int res = fl * age;
	res = res * this.name.hashCode();
	return res;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值