JAVA

学习JAVA的第二天

认识权限修饰符,list,map

  1. list的介绍
    List是Java中比较常用的集合类,List 是一个接口,它继承于Collection的接口。它代表着有序的队列。
    List中元素可以重复,并且是有序的。list分为ArrayList、 LinkedList 和 Vector三类。
    ArrayList底层是用数组实现的,可以认为ArrayList是一个可改变大小的数组。随着越来越多的元素被添加到ArrayList中,其规模是动态增加的。
    LinkedList底层是通过双向链表实现的。所以,LinkedList和ArrayList之前的区别主要就是数组和链表的区别。
    数组中查询和赋值比较快,因为可以直接通过数组下标访问指定位置。
    链表中删除和增加比较快,因为可以直接通过修改链表的指针(Java中并无指针,这里可以简单理解为指针。其实是通过Node节点中的变量指定)进行元素的增删。
    所以,LinkedList和ArrayList相比,增删的速度较快。但是查询和修改值的速度较慢。同时,LinkedList还实现了Queue接口,所以他还提供了offer(), peek(), poll()等方法。
    Vector和ArrayList一样,都是通过数组实现的,但是Vector是线程安全的。和ArrayList相比,其中的很多方法都通过同步(synchronized)处理来保证线程安全。
    如果你的程序不涉及到线程安全问题,那么使用ArrayList是更好的选择(因为Vector使用synchronized,必然会影响效率)。
    二者之间还有一个区别,就是扩容策略不一样。在List被第一次创建的时候,会有一个初始大小,随着不断向List中增加元素,当List认为容量不够的时候就会进行扩容。Vector缺省情况下自动增长原来一倍的数组长度,ArrayList增长原来的50%。

  2. 权限修饰符一共有四中public protect default private,他们的区别在于权限的不同
    其中public的权限最大,他能访问类,包,子类,其他包。
    protect他能访问类,包,子类。
    default他能访问类,包。
    private他只能访问类。

  3. map的用法
    map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):
    HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度。HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录的Value为 Null。非同步的。
    TreeMap: 能够把它保存的记录根据key排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。
    Hashtable: 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。
    LinkedHashMap: 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。
    4.课后小作业

import java.util.*;

public class BeautifulLady {

//选十个美女
//计算平均身高,体重
//判断平均身高大于150,体重小于60,就是美女;
//包装类  Interger
//类    class  美女
//对象  new   范冰冰

public void getLady()//权限修饰符 public private...
{
    Scanner stop=new Scanner(System.in);
    List<Integer> hights=new ArrayList<>();
    List<Integer> weights=new ArrayList<>();
    for(int i=0;i<2;i++)
    {
        int h,w;
        hights.add(h=stop.nextInt());
        weights.add(w=stop.nextInt());

    }
    System.out.println(hights);
    System.out.println(weights);
    Map<String,Integer> hightWeightAvg = getHightWeightAvg(hights,weights);
    System.out.println(hightWeightAvg);
    boolean result=getResult(hightWeightAvg);
    if(result)
    {
        System.out.println("是美女");


    }
    else
        System.out.println("不是美女");






}
  Map<String,Integer> getHightWeightAvg(List<Integer> hights, List<Integer> weights)
{
    int sumW=0,sumH=0,i=0,j=0;
    int avgW,avgH;
    for(int h:hights)
    {
        sumH=sumH+h;
        i++;
    }
    avgH=sumH/i;
    for(int w:weights)
    {
        sumW=sumW+w;
        j++;
    }
    avgW=sumW/j;


    Map<String,Integer> map=new HashMap<>();
    map.put("avgW",avgW);
    map.put("avgH",avgH);



   return map;



}
  boolean getResult(Map<String,Integer> map)
{
 int avgW=map.get("avgW");
 int avgH=map.get("avgH");
 if(avgW<60&&avgH>150)
     return true;
 else
     return false;
}


public static void main(String[] args) {
    BeautifulLady beautifulLady=new BeautifulLady();
    beautifulLady.getLady();



}

}
6.小学生题目
public class SmallWork {
public static void main(String[] args) {
int a=154,b=82,i=0;
while(a!=b*4) {
a=a-2;
b=b-2;
i++;
}
System.out.println(i);

}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值