第十三次课
一.
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;
}
}