Java基础04——常用工具类

一、基本语法

【变量、数据类型、数组、运算符、流程控制语句】

二、面向对象基础与进阶

【类和对象、方法(构造、重载)、继承(方法重写)、抽象类、】

三、面向对象高级

【接口、匿名内部类、泛型、文件、反射、多线程】

四、常用工具类:

【类集合(ArrayList、HashSet、HashMap)、String(切割)、Collections】

 

四、常用类

1、ArrayList

一、构建一个ArrayList对象

ArrayList<Integer> array = new ArrayList<Integer>();
ArrayList<Product> arrayPrdt = new ArrayList<Product>();

二、往ArrayList中添加数据

array.add(5);
array.add(2,4);
arrayPrdt.add(p1);

三、获取ArrayList的数据、长度

int a = array.get(1);
int length=array.size();

四、移除ArrayList中的数据

array.remove(1);

五、遍历ArrayList中的数据

for (int i = 0; i < array.size(); i++) 
{
    System.out.println(array.get(i));
}
for(int i:array)
{
     System.out.println(i);
}

 

六、更改指定位置的数据

array.set(2, 15);//第三个数据上改为15

七、应用(用ArrayList包装并操作对象数据)

包装对象:

ArrayList<Product> arr=new ArrayList<Product>();
arr.add(p1);
arr.add(p2);
arr.add(p3);

操作对象:

//计算总金额
float sum=0;
for(int i=0;i<arr.size();i++)
{
    sum +=(arr.get(i).pPrice*arr.get(i).pNum);
}
System.out.println("总金额为:"+sum);

 

//计算单价最高的商品
Product max=arr.get(0);
for(int i=0;i<arr.size();i++)
{
    if(arr.get(i).pPrice>max.pPrice)
    {
        max=arr.get(i);
        
    }
}
System.out.println("单价最高的商品是:"+max.pName);

注意我比较的是arr对象的price,但我输出的是对象的name。

 

//按单价从高到低排序
for(int i=1;i<arr.size();i++)
{
    for(int j=0;j<arr.size()-i;j++)
    {
        if(arr.get(j).pPrice<arr.get(j+1).pPrice)
        {
            Product t=arr.get(j);
            Product t_1=arr.get(j+1);
            arr.set(j, t);
            arr.set(j+1, t_1);
            //ArrayList不能赋值形式(以下错误)
//                    Product t=arr.get(j);
//                    arr.get(j)=arr.get(j+1);
//                    arr.get(j+1)=t;                                            
        }
    }
}
System.out.println("商品单价从高到低依次为:");
for(int i=0;i<arr.size();i++)
{
    System.out.println(arr.get(i).pName);
    
}

2、HashSet(散列表、无序、不能重复)

一、构建一个HashSet对象

HashSet<User> set1=new HashSet<User>();

二、往HashSet中添加数据

set1.add(u1);

三、获取HashSet长度(HashSet散列表不能通过索引获取具体的某个数据)

int size=set1.size();

四、判断数据是否存在、

boolean t=set1.contains(u1);

五、移除HashSet数据

set1.remove(u1);

六、遍历HashSet中的数据

方法一:用迭代器

Iterator<User> iterator=set1.iterator();
while(iterator.hasNext())
{
    User next=iterator.next();
    System.out.println(next);
}

方法二:用增强for循环(内部封装的迭代器)

for(User tmp:set1)
{
    System.out.println(tmp);
}

七、HashSet中的数据找最大值

 1 //从set中找出薪水最高的User对象
 2 Iterator<Homework2_User> it2=set1.iterator();
 3 Homework2_User maxUser=it2.next();//// 由于从set集合中无法直接取出一个数据,所以使用了它的迭代器工具
 4 //方法一:
 5 while(it2.hasNext())
 6 {
 7     Homework2_User user=it2.next();//这里得要先接住it2.next()
 8     if(maxUser.getUserSalary()<user.getUserSalary())
 9     {
10         maxUser=user;
11     }
12 }
13 //方法二:
14 for(Homework2_User user:set1)
15 {
16     if(maxUser.getUserSalary()<user.getUserSalary())
17     {
18         maxUser=user;
19     }
20 }
21 System.out.println("set中薪水最高的对象为:"+maxUser);

 

3、HashMap

一、构造一个hashmap对象

HashMap<String, User> map1=new HashMap<String, User>();

二、往hashmap中添加数据(如果key重复,则会覆盖)

map1.put("01", u1);

三、获取hashmap中的数据、长度(靠key来索引)

User a=map1.get("01");
int b=map1.size();

四、判断hashmap中的数据是否存在

boolean t=map1.containsKey("01");
System.out.println(t);

五、移除hashmap中的数据

map1.remove("01");

六、遍历hashmap中的数据

方法一:

// 先取出所有的key
Set<String> keySet=map1.keySet();
// 然后遍历一个一个的key,去map1中取value
for(String key:keySet)
{
    System.out.println(map1.get(key));
}

方法二:

1 Set<java.util.Map.Entry<String, Homework2_User>> entrySet=map1.entrySet();
2 for(java.util.Map.Entry<String, Homework2_User> ent:entrySet)
3 {
4     System.out.println(ent.getKey()+":"+ent.getValue());
5 }

六、从map中找出年龄最小的用户

 1 System.out.println("map中age最小的对象是:");
 2 Iterator<String> keyIter=map1.keySet().iterator();//利用迭代器取出随意一个map数据
 3 Homework2_User minAgeUser=map1.get(keyIter.next());
 4 for(String key:map1.keySet())
 5 {
 6     if(minAgeUser.getUserAge()>map1.get(key).getUserAge())
 7     {
 8         minAgeUser=map1.get(key);
 9     }
10 }
11 System.out.println(minAgeUser);

 

4、String类

字符串切割工具split

String a="01,02,03";
String[] split=a.split(",");

 5、Collections类

使用方式1: 将需要排序的List<User> 和 list中的数据类型User的比较器 传给框架来排序

Collections.sort(uList, new Comparator<User>() {
    @Override
    public int compare(User o1,User o2)        
    {
        if(o1.getSalary()>o2.getSalary())
        {
            return 1;
        }
        if(o1.getSalary()==o2.getSalary())
        {
            return 0;
        }
        else
        {
            return -1;
        }
    }  
});

 使用方式2:将需要排序的List<User>传递给框架即可, 不需要传比较器(前提是,数据类User本身要带一个compareTo方法)

public class User implements Comparable<User>{
    
    @Override
    public int compareTo(User o2){
        if(this.getSalary > o2.getSalary){
            return 1;
        }
        
        if(this.getSalary == o2.getSalary){
            return 0;
        }else{
            return -1;    
        }
        
    }
    
}

 

posted @ 2019-03-04 10:32  zr-zhang2019  阅读(161)  评论(0)    收藏  举报