认识权限修饰符,list,map
-
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%。 -
权限修饰符一共有四中public protect default private,他们的区别在于权限的不同
其中public的权限最大,他能访问类,包,子类,其他包。
protect他能访问类,包,子类。
default他能访问类,包。
private他只能访问类。 -
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);
}
}