目录
1.打印信息
2.ArrayList的使用
User类
测试类
3.Set的使用
汽车类
测试类
4.ArrayList使用
5.新闻
新闻类
测试类
6.返回索引
7.删除重复QQ
8.Map集合操作
9.成绩排序
学生类
测试类
10.Map基础题
学员类
测试类
11.遍历Map综合-国家名称
12.Collections的常用方法
1.打印信息
package dh01.test;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
//测试练习
public class test {
public static void main(String[] args) {
Set sets = new HashSet();
// String s1 = "张三";
// String s2 = s1;
// String s3 = "王五";
//----------------------------
String s1 = new String("张三");
String s2 = new String("张三");
String s3 = "王五";
sets.add(s1);
sets.add(s2);
sets.add(s3);
/*
* 增强for循环
*/
for(Object obj : sets) {
System.out.println(obj);
}
System.out.println("***************");
/*
*使用迭代器 应用场景:当集合内容很大时(效率高)
*/
//创建迭代器
Iterator it = sets.iterator();
while (it.hasNext()) {
//判断下一个是否有值
System.out.println(it.next());
}
// for (int i = 0; i < sets.size(); i++) {
// System.out.println(it.next());
// }
}
}
*************************分割*************************
2.ArrayList的使用
使用ArrayList。创建用户类,包含用户ID,用户名,用户密码,性别,账户余额字段。
(1)初始化3个用户对象
(2)循环输出三个用户信息
(3)根据用户选择编号,修改对应的用户名,修改后提示修改成功并循环打印
(4)添加用户,提示用户输入用户ID,用户名,密码,性别,并添加集合
(5)找出账户为负数的用户,并循环显示
User类
package dh01.test01;
//用户类
public class User {
// 使用ArrayList。创建用户类,包含用户ID,用户名,用户密码,性别,账户余额字段。
private int ID;// 用户ID
private String userName;// 用户名
private int pwd;// 用户密码
private String sex;// 性别
private int account;// 余额
//构造方法
public User() {
}
public User(int iD, String userName, int pwd, String sex, int account) {
this.ID = iD;
this.userName = userName;
this.pwd = pwd;
this.sex = sex;
this.account = account;
}
//set&get-------------------------------------------------
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getPwd() {
return pwd;
}
public void setPwd(int pwd) {
this.pwd = pwd;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAccount() {
return account;
}
public void setAccount(int account) {
this.account = account;
}
}
测试类
package dh01.test01;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
//测试类
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<User> list = new ArrayList<User>();
// 初始化3个用户对象
list.add(new User(1, "张三", 1001, "男", 1000));
list.add(new User(2, "李四", 1002, "女", 2000));
list.add(new User(3, "王五", 1003, "男", 3000));
// 循环输出三个用户信息
for (int i = 0; i < list.size(); i++) {
User user = list.get(i);
System.out.println(user.getID() + "\t" + user.getUserName() + "\t" + user.getPwd() + "\t" + user.getSex() + "\t"
+ user.getAccount());
}
// 根据用户选择编号,修改对应的用户名,修改后提示修改成功并循环打印
System.out.print("请选择要修改的编号:");
int num = sc.nextInt();
for (User user : list) {
if (num == user.getID()) {
System.out.println("可进行修改");
System.out.print("请输入要修改的用户名:");
String name = sc.next();
user.setUserName(name);
System.out.println("修改成功");
}
}
// 循环打印信息
for (int i = 0; i < list.size(); i++) {
User user = list.get(i);
System.out.println(user.getID() + "\t" + user.getUserName() + "\t" + user.getPwd() + "\t" + user.getSex() + "\t"
+ user.getAccount());
}
// (4)添加用户,提示用户输入用户ID,用户名,密码,性别,并添加集合
User user = new User();
System.out.println("根据提示,添加新用户");
System.out.print("请输入用户ID:");
int newId = sc.nextInt();
user.setID(newId);
System.out.print("请输入用户名:");
String newName = sc.next();
user.setUserName(newName);
System.out.print("请输入密码:");
int newPwd = sc.nextInt();
user.setPwd(newPwd);
System.out.print("请输入性别:");
String newSex = sc.next();
user.setSex(newSex);
System.out.print("请输入账户余额:");
int newAccount = sc.nextInt();
user.setAccount(newAccount);
// 添加进集合
list.add(new User(newId, newName, newPwd, newSex, newAccount));
System.out.println("***********添加后的集合信息***********");
for (int i = 0; i < list.size(); i++) {
user = (User) list.get(i);
System.out.println(user.getID() + "\t" + user.getUserName() + "\t" + user.getPwd() + "\t" + user.getSex() + "\t"
+ user.getAccount());
}
// (5)找出账户为负数的用户,并循环显示
for (User user2 : list) {
if (user2.getAccount()<0) {
System.out.println(user2.getUserName()+"账户为:"+user2.getAccount());
}
}
}
}
*************************分割*************************
3.Set的使用
使用set。创建汽车类,包含品牌,型号,车牌号,价格四个字段。
(1)初始化三辆汽车
(2)使用迭代器循环打印汽车信息。
(3)使用增强for循环打印汽车信息。
汽车类
package dh01.test02;
//汽车类
public class Car {
private String brand;//品牌
private String type;//型号
private String carID;//车牌号
private int money;//价格
//构造方法
public Car() {
}
public Car(String brand, String type, String carID, int money) {
this.brand = brand;
this.type = type;
this.carID = carID;
this.money = money;
}
//重写
@Override
public String toString() {
return "Car [brand=" + brand + ", type=" + type + ", carID=" + carID + ", money=" + money + "]";
}
//set&get------------------------------
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCarID() {
return carID;
}
public void setCarID(String carID) {
this.carID = carID;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
}
测试类
package dh01.test02;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
//测试类
public class Test {
public static void main(String[] args) {
Set<Car> sets = new HashSet<Car>();
// (1)初始化三辆汽车
sets.add(new Car("aaa", "000", "浙B00000", 10000));
sets.add(new Car("bbb", "111", "浙B11111", 11111));
sets.add(new Car("ccc", "222", "浙B22222", 22222));
// (2)使用迭代器循环打印汽车信息。
Iterator<Car> iter = sets.iterator();
while (iter.hasNext()) {
// 判断下一个是否有值
Car car = (Car) iter.next();
System.out.println(car.getBrand() + " " + car.getType() + " " + car.getCarID() + " " + car.getMoney() + " ");
}
System.out.println("*****************************");
// (3)使用增强for循环打印汽车信息。
for (Car car : sets) {
System.out.println(car);
}
}
}
*************************分割*************************
4.ArrayList使用
package dh01;
import java.awt.List;
import java.util.ArrayList;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
//ArrayList
ArrayList list = new ArrayList();
list.add("a");//向后新增值
list.add("b");
list.add(1, "c");//指定位置插入
list.add(1, "d");
list.add("e");
list.add("f");
System.out.println(Arrays.toString(list.toArray()));
System.out.println("获得集合长度===="+list.size());
System.out.println("根据下标获得值===="+list.get(3));
boolean bool = list.contains("a");
System.out.println("判断列表中是否存在指定元素===="+bool);
System.out.println("根据内容删除元素===="+list.remove("a"));
System.out.println(Arrays.toString(list.toArray()));
System.out.println("根据下标删除元素===="+list.remove(1));
System.out.println(Arrays.toString(list.toArray()));
}
}
*************************分割*************************
5.新闻
新闻类
package dh01;
/**
*
* 新闻类
*
*/
public class News {
private String id;
private String title;
private String adduser;
//构造方法
public News() {
}
public News(String id, String title, String adduser) {
this.id = id;
this.title = title;
this.adduser = adduser;
}
//--------------------------
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAdduser() {
return adduser;
}
public void setAdduser(String adduser) {
this.adduser = adduser;
}
}
测试类
package dh01;
import java.util.ArrayList;
//测试类
public class TestNews {
public static void main(String[] args) {
ArrayList<News> listnews = new ArrayList<News>();
listnews.add(new News("1","xxxx","zhangsan"));
listnews.add(new News("2","yyyy","lisi"));
listnews.add(new News("3","zzzz","wangwu"));
int size = listnews.size();//获得总记录数
System.out.println("总数:"+size);
listnews.add(new News("4","aaaa","qqqq"));
System.out.println("总数:"+listnews.size());
/*
* 循环遍历集合
*/
for (int i = 0; i < listnews.size(); i++) {
News news = listnews.get(i);
System.out.println(news.getTitle());
}
}
}
*************************分割*************************
6.返回索引
定义一个方法listTest(ArrayList<Integer> al, Integer s),要求返回s在al里面第一次出现的索引,
al.add(1);
al.add(10);
al.add(8);
int s = 8;
return al.indexOf(s);
for(int i=0;i<al.size();i++)
{
if(s==al.get(i))
{
return i;
}
}
return -1;如果s没出现过返回-1,有返回下标
package dh02.test01;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(10);
list.add(8);
System.out.println(listTest(list,6));
}
public static int listTest(ArrayList<Integer> al, Integer s) {
int flag = -1;
int index = 0;
for (int i : al) {
if (i == s) {
return index;
}
index++;
}
return flag;
}
}
*************************分割*************************
7.删除重复QQ
已知数组存放一批QQ号码,QQ号码最长为11位,最短为5位String[] strs =
{"12345","67891","12347809933","98765432102","67891","12347809933"}。
将该数组里面的所有qq号都存放在LinkedList中,将list中重复元素删除,将list中所有元素分别用迭代器和增强for循环打印出来
package dh02.test02;
import java.util.List;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
/*
2.QQ号码最长为11位,最短为5位String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"}。
将该数组里面的所有qq号都存放在LinkedList中,
将list中重复元素删除,将list中所有元素分别用迭代器和增强for循环打印出来
*/
public class Test {
public static void main(String[] args) {
// 数组
String[] strs = { "12345", "67891", "12347809933", "98765432102", "67891", "12347809933" };
// 集合
List<String> list = new LinkedList<String>();
// 将数组中的所有元素添加进集合
Collections.addAll(list, strs);
Collections.sort(list);// ----------------------------------
System.out.println(list.size());// LinkedList长度
System.out.println(Arrays.toString(list.toArray()));
System.out.println("*********************************");
// 迭代器
Iterator iterator = list.iterator();
boolean bool = true;
while (iterator.hasNext() && bool ) {
for (int i = 1; i <= strs.length; i++) {
if (i == strs.length) {
i = i - 1;
bool = false;
break;
}
if (iterator.next().equals(strs[i])) {
iterator.remove();
}
}
System.out.println(Arrays.toString(list.toArray()));
}
System.out.println("************迭代器*********************"); // 迭代器 Iterator
iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("*************增强for********************"); // 增强for
for (String string : list) {
System.out.println(string);
}
}
}
*************************分割*************************
8.Map集合操作
现在有一个map集合如下:
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1, "张三丰");
map.put(2, "周芷若");
map.put(3, "汪峰");
map.put(4, "灭绝师太");
要求:
(1)遍历集合,并将序号与对应人名打印。
(2)向该map集合中插入一个编码为5姓名为李晓红的信息
(3).移除该map中的编号为1的信息
(4).将map集合中编号为2的姓名信息修改为"周林"
package dh02.test04;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/*
4.现在有一个map集合如下:
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1, "张三丰");
map.put(2, "周芷若");
map.put(3, "汪峰");
map.put(4, "灭绝师太");
要求:
(1) 遍历集合,并将序号与对应人名打印。
(2) 向该map集合中插入一个编码为5姓名为李晓红的信息
(3) 移除该map中的编号为1的信息
(4) 将map集合中编号为2的姓名信息修改为"周林"
*/
public class Test {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "张三丰");
map.put(2, "周芷若");
map.put(3, "汪峰");
map.put(4, "灭绝师太");
//-------------------------
// 遍历集合,并将序号与对应人名打印。
// foreach--->key
Set<Integer> keys = map.keySet();// 获取map中所有key
for (Integer key : keys) {
String value = map.get(key);
System.out.println(key + "-" + value);
}
System.out.println("*************添加5.李晓红****************");
// ---------------添加---------------
map.put(5, "李晓红");
// 迭代器--->key
Iterator<Integer> it = keys.iterator();
while (it.hasNext()) {
Integer key = it.next();// 获取map中的每一个key
String value = map.get(key);
System.out.println(key + "-" + value);
}
System.out.println("*****移除编号为1的信息,并将编号为2的信息修改*****");
// 移除该map中的编号为1的信息
map.remove(1);
// 将map集合中编号为2的姓名信息修改为"周林"
map.put(2, "周林");
// 获取map中的所有键值对,然后再键值对中分别获取key和value
Set<Map.Entry<Integer, String>> set = map.entrySet();
for (Entry<Integer, String> me : set) {
Integer key = me.getKey();
String value = me.getValue();
System.out.println(key + "-" + value);
}
}
}
*************************分割*************************
9.成绩排序
分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,
如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序姓名(String)年龄(int)分数(float)
liusan 25 90.0F
lisi 21 90.0F
wangwu 20 99.0F
sunliu 22 100.0F
学生类
package dh02.test03;
import java.util.Comparator;
//学生
public class Student implements Comparable<Student>,Comparator<Student> {
private String name;
private int age;
private float grades;
public Student() {
}
public Student(String name, int age, float grades) {
this.name = name;
this.age = age;
this.grades = grades;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", grades=" + grades + "]";
}
@Override
public int compareTo(Student o) {
//如果成绩相同,则按照年龄进行排序
if (this.grades == o.grades) {
//年龄相等,不换
if (this.age == o.age) {
return 0;
}
//年龄大,换
else if (this.age > o.age) {
return 1;
}else {
return -1;
}
}else if (this.grades > o.grades) {
return 1;
}
else {
return -1;
}
}
@Override
public int compare(Student o1, Student o2) {
if (o1.grades == o2.grades) {
return o1.age - o2.age;
}
return (int) (o1.grades-o2.grades);
}
// -------------------------------------------
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;
}
public float getGrades() {
return grades;
}
public void setGrades(float grades) {
this.grades = grades;
}
//-------------------------------------------
}
测试类
package dh02.test03;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/*
分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,
如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序
姓名(String)年龄(int)分数(float)
liusan 25 90.0F
lisi 21 90.0F
wangwu 20 99.0F
sunliu 22 100.0F
*/
public class Test {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("1",25,90.0F));
list.add(new Student("2",20,99.0F));
list.add(new Student("3",21,90.0F));
list.add(new Student("4",22,100.0F));
Collections.sort(list);
for (Student student : list) {
System.out.println(student.toString());
}
}
}
*************************分割*************************
10.Map基础题
学员类
package dh02;
//学员类
public class Student implements Comparable{
private int no;//学号
private String name;
private String sex;
public Student() {
}
public Student(String name, String sex) {
this.name = name;
this.sex = sex;
}
public Student(int no, String name, String sex) {
this.no = no;
this.name = name;
this.sex = sex;
}
//--------------------------
// 重写方法:定义学生对象的比较规则
// 比较规则:按学号比,大的往后排
// 比较对象:当前学生对象(this)和Object o
public int compareTo(Object o) {
Student student = (Student)o;
if (this.no == student.no) {
return 0;//学号相同,两个学生对象一样大
}
else if (this.no > student.no) {
return 1;//当前学生对象学号大于比较的学生对象学号
}
else {
return -1;//当前学生对象学号小于比较的学生对象学号
}
}
//--------------------------
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
测试类
package dh02;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
//测试学生信息
public class TestStudent {
public static void main(String[] args) {
Student stu1 = new Student("张三", "男");
Student stu2 = new Student("李明", "男");
Student stu3 = new Student("王小华", "女");
Map<String,Student> stuMap = new HashMap<String,Student>();
stuMap.put("Buck",stu1);
stuMap.put("Jack",stu2);
stuMap.put("Jession",stu3);
//输出几名学生进入
System.out.println("一共有"+stuMap.size()+"名学生进入");
System.out.println("---------------他们是---------------");
Set<Map.Entry<String, Student>> set = stuMap.entrySet();
for (Map.Entry<String, Student> me : set) {
String key = me.getKey();
Student student = me.getValue();
System.out.println(key+"-"+student.getName()+"-"+student.getSex());
}
//实现特定英文名称对应的学生信息
System.out.println("*********************************");
Scanner sc = new Scanner(System.in);
System.out.print("请输入您要查询的学生英文名:");
String name = sc.next();
if (stuMap.containsKey(name)) {
//在map中找到了相应的key,则根据key去获取相应的value(学生对象)
Student student = (Student)stuMap.get(name);
System.out.println("该学生的全部信息如下:");
System.out.println(name+"-"+student.getName()+"-"+student.getSex());
}
else {
System.out.println("对不起,没有该名学生!!!!!");
}
}
}
*************************分割*************************
11.遍历Map综合-国家名称
package dh02;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*
* map
* 国家中英文名称信息对照
* 中国-China
* 美国-USA
* 日本-Japan
*
*/
public class CountriesInfo {
public static void main(String[] args) {
// 创建集合对象,并将国家信息键值放入集合
Map<String, String> countries = new HashMap<String, String>();
countries.put("China", "中国");
countries.put("USA", "美国");
countries.put("Japan", "日本");
// 获取集合中存储的元素个数(键值对对数)
System.out.println(countries.size());
// // 获取结合中特定的key对应的value--object返回值类型,需要强制数据类型转换
// String country = (String) countries.get("China");
// System.out.println(country);
// 获取结合中特定的key对应的value--有了泛型,数据类型不需要强制转换
String country = countries.get("China");
System.out.println(country);
//---------------------------------
// 获取结合中特定的key对应的value,如果找不到,则返回null
String country1 =countries.get("Australia");
System.out.println(country1);
// 判断集合中是否存在某一个国家
System.out.println("国家列表中是否存在China:" + countries.containsKey("China"));
System.out.println("国家列表中是否存在Australia:" + countries.containsKey("Australia"));
// 删除某个特定的key对应的键值对
System.out.println("国家列表中是否存在USA:" + countries.containsKey("USA"));
countries.remove("USA");
System.out.println("国家列表中是否存在USA:" + countries.containsKey("USA"));
System.out.println(countries.size());
// 获取键的集合,值的集合,键值对的集合
System.out.println(countries.keySet());
System.out.println(countries.values());
System.out.println(countries);
System.out.println("************************************");
// 遍历Map 思路一:遍历key(set),通过key > value
// 方法一:增强for遍历key的集合(set)
Set<String> keys = countries.keySet();// 获取到了Map中的所有key
for (String key : keys) {// 获取到了map中的每一个key
String value = countries.get(key);// 根据map中的每个key去获取对应的value
System.out.println(key + "-----" + value);
}
System.out.println("************************************");
// 方法二:迭代器 遍历key的集合(Set)
Iterator<String> it = keys.iterator();
while (it.hasNext()) {
String key = it.next();// 获取到了map中的每一个key
String value = countries.get(key);// 根据map中的每个key去获取对应的value
System.out.println(key + "-----" + value);
}
System.out.println("************************************");
// 遍历Map 思路二:获取map中的所有键值对,然后再键值对中分别获取key和value
Set<Map.Entry<String, String>> set = countries.entrySet();// 获取map中的键值对
// 遍历键值对的集合,把每个键值对(obj)---Map.Entry(键值对的类型)拿出来
for (Map.Entry<String, String> me: set) {
String key = me.getKey();// 获取键值对中的键
String value = me.getValue();// 获取键值对中的值
System.out.println(key + "-----" + value);
}
}
}
*************************分割*************************
12.Collections的常用方法
package dh02;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
//Collections的常用方法
public class CollectionsUseDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("ant");
list.add("bear");
list.add("pen");
list.add("zoo");
list.add("apple");
list.add("candy");
list.add("zookeeper");
System.out.println("**********************");
for (String s : list) {
System.out.println(s);
}
System.out.println("**********************");
//使用Collections对集合进行升序排列
Collections.sort(list);
for (String s : list) {
System.out.println(s);
}
//查找集合元素的最大、最小值
System.out.println("**********************");
System.out.println("集合中的最大元素:"+Collections.max(list));
System.out.println("集合中的最小元素:"+Collections.min(list));
//查找集合中的特定元素(必须进行排序)
System.out.println("**********************");
System.out.println(Collections.binarySearch(list, "candy"));
//反转集合元素的顺序
Collections.reverse(list);
System.out.println("**********************");
for (String s : list) {
System.out.println(s);
}
}
}