集合框架-Collection
一.List接口:有序的集合,数据可以重复,长度可变,可以动态的增加和修改
1.1 ArrayList —可变长度的数组!
1.扩容的时候按照以前长度的一半进行增长:
0001(1)->0000.1(0.5)
int newCapacity = oldCapacity + (oldCapacity >> 1);
int newCapacity = oldCapacity + (oldCapacity/2);
2.添加数据
3.修改数据
4.查询数据
5.判定是否存在
package org.softeem.homework;
import java.util.Arrays;
import java.util.Scanner;
import java.util.regex.Pattern;
/**
*/
public class RegistQueryDemo {
public static void main(String[] args) {
System.out.println("========珍爱网=========");
//控制台对象
Scanner sc=new Scanner(System.in);
//保存数组的数组
User[] users=init();
//循环去操作这个数组的CRUD(增删改查)
while(true){
System.out.println("1-注册;2-查询指定用户;3-查询全部用户;4-修改用户信息...");
//得到用户输入的业务功能序号
int index=findInput(sc);
//根据输入的index进行业务的映射
switch(index){
case 1:
users=regist(users,sc);break;
case 2:
findByNickname(users,sc);break;
default:
System.out.println("您输入的功能正在完善中...");
}
}
}
//封装查询指定用户的信息
private static void findByNickname(User[] users,Scanner sc){
System.out.println("请输入您中意的佳丽或者靓仔的名字...");
String name=sc.next();
//迭代判定
for(User u:users){
//System.out.println(u);
if(u.getNickname().equalsIgnoreCase(name)){
System.out.println("您中意的用户信息:"+u);
return;
}
}
System.out.println("您查询的用户不存在,,,");
}
//封装用户的注册功能
private static User[] regist(User[] users,Scanner sc){
System.out.println("尊敬的嘉宾,欢迎来到珍爱网大型交友网站注册页面--");
String username;
String pwd;
String nickname;
String gendar;
String age;
String phone;
//属性判定
do{
System.out.println("请输入您的用户名:6-15位数字,字母,下划线");
username=sc.next();
}while(!Pattern.matches("^[a-zA-Z0-9_]{6,15}$", username));
//密码
do{
System.out.println("请输入您的密码:6-15位数字,字母");
pwd=sc.next();
}while(!Pattern.matches("^[a-zA-Z0-9]{6,15}$", pwd));
//昵称
do{
System.out.println("请输入您的昵称:2-8位中文");
nickname=sc.next();
}while(!Pattern.matches("^[\u4e00-\u9fa5]{2,8}$", nickname));
//性别
do{
System.out.println("请输入您的性别: f(女)或者m(男)");
gendar=sc.next();
}while(!Pattern.matches("^[mf]$", gendar));
//年龄
do{
System.out.println("请输入您的年龄:未满18岁不得注册");
age=sc.next();
}while(!Pattern.matches("^([2-8]\\d)|18|19$", age));
//电话
do{
System.out.println("请输入您的手机号:11位手机号");
phone=sc.next();
//13 14 15 17 18
}while(!Pattern.matches("^(13|14|15|17|18)[0-9]{9}$", phone));
//构件对象
User u=new User(username, pwd, nickname, gendar.charAt(0),
Integer.parseInt(age), phone);
//扩容数组
users=Arrays.copyOf(users, users.length+1);
//赋值
users[users.length-1]=u;
System.out.println(Arrays.toString(users));
return users;
}
//封装用户输入选择业务的序号
private static int findInput(Scanner sc){
//1.得到用户输入的字符串
String input=sc.next();
//2.使用正则表达式去解析
boolean flag=Pattern.matches("\\d", input);
//3.判定
if(flag){
return Integer.parseInt(input);
}else{
System.out.println("输入不合法!,请重新输入!~");
return 0;
}
}
//封装数组初始化的业务
private static User[] init(){
User[] users=new User[1];
//构建管理员用户
User u=new User();
u.setUsername("suyan");
u.setPwd("123456");
u.setNickname("南湖苏大帅");
u.setPhone("13801100110");
u.setAge(18);
u.setGendar('m');// 1/0 m/f
//赋值
users[0]=u;
return users;
}
}