当前位置: 首页 > news >正文

郑州市二七建设局网站有域名有空间怎么做网站

郑州市二七建设局网站,有域名有空间怎么做网站,学校网站前置审批,app应用开发List Set Map 一、List 几个小问题: 1、接口可以被继承吗?(可以) 2、接口可以被多个类实现吗?(可以) 3、以下两种写法有什么区别? //List list1new List();是错误的因为List()…

List Set Map

一、List

几个小问题:

1、接口可以被继承吗?(可以)

2、接口可以被多个类实现吗?(可以)

3、以下两种写法有什么区别?

//List list1=new List();是错误的因为List()是一个接口,是抽象的不能被实例化
//ArrayList()在源码中是一个类(class),可以new对象
//只能用List接口里的方法,不能使用ArrayList中的方法
List list1=new ArrayList();//可以使用ArrayList里的所有方法,因为ArrayList实现1ist接口,所以可以调用的方法比第一种要多,还可以使用List接口里面没有的方法
ArrayList list2=new ArrayList();
  • 第一种写法是List接口new的对象,只能用接口中的方法;
  • 第二种是new一个类对象,就像Student stuent=new Student()这样,所以可以使用ArrayList中的方法,又因为ArrayList实现了List接口,所以也能用List中的方法

4、通常List添加元素:

List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");

当所添加元素确定时,可以这样写:

List<String> list1 = Arrays.asList("aaa","bbb");

当List内元素确定时,这样写性能较高,没有扩容操作

但是如果想再向list1中添加元素时会报错,原因是上述写法执行时JVM会自动申请两块(只有两块)连续的内存空间,再add会报错。

List中的api

1、添加元素 add()
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");System.out.println(list); //[aaa,bbb,ccc,ddd]
2、获取指定下标元素 get(int index)
String str = list.get(3);
System.out.println(str);//ccc
3、设置指定元素更改为新值 set(int index,E e)
String old = list.set(0, "1");
System.out.println(list);//[1,bbb,ccc,ddd]
System.out.println(old);//aaa
4、指定位置添加新元素 add(int index,E e)

在第index个位置添加新的值e,原来这个位置及其后面的元素都向后移一位。

//list集合为:[aaa,bbb,ccc,ddd]
list.add(1,"2");
System.out.println(list);
//[aaa,2,bbb,ccc,ddd]
5、删除指定位置元素 remove(int index)

删除第index数,返回的是被删除的那个数;每次只能删除一个数

String str = list.remove(1);
System.out.println(list);//[aaa,bbb,ccc,ddd]
System.out.println(str);//2
6、删除全部元素
错误示例:遍历删除
List<String> list = new ArrayList<>();
//这里插入4个aaa
list.add("aaa");
list.add("aaa");
list.add("aaa");
list.add("aaa");//遍历删除
for(int i=0;i<list.size();i++){if("aaa".equals(list.get(i))){list.remove(i);}
}System.out.println(list); //[aaa,aaa]

0

发现这样的遍历删除并不能删除干净。

为什么遍历list删不干净

原因:每当删除一个元素,下一个元素就会向前顶一个位置,会使原本index为1的元素变为为0,且 i 在执行后会自增,导致一半元素无法删除。

删除的三种方法
  • 倒序删除
public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("aaa");list.add("aaa");list.add("aaa");list.add("aaa");//倒序遍历删除for(int i=list.size()-1;i>=0;i--){if("aaa".equals(list.get(i))){list.remove(i);}}System.out.println(list);}
  • 迭代器删除
public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("aaa");list.add("aaa");list.add("aaa");list.add("aaa");// 使用迭代器删除Iterator<String> iterator = list.iterator();while(iterator.hasNext()) {String s = iterator.next();if ("aaa".equals(s)) {iterator.remove();}}System.out.println(list);}
  • lambada删除
public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("aaa");list.add("aaa");list.add("aaa");list.add("aaa");// 使用 jdk8 新方法list.removeIf(item -> "aaa".equals(item));System.out.println(list);}

list判空?
List<String> list=new ArrayList<>();
system.out.print(list==null); //false

list数组是new出来的,判断一定为false

使用 hutool 工具类判空

依赖

<!--hutool工具类-->
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version>
</dependency>

工具类判空

List<String> list = new ArrayList<>();//写法错误,当list定义为List<String> list=null;会出现空指针
list.get(1).equals(list.get(2));//正确写法
boolean equals=StrUtils.equals(list.get(1),list.get(2));

list不是线程安全的
  • 创建线程的四种方式

    1)继承Thread类创建线程

    2)实现Runnable接口创建线程

    3)使用Callable和Future创建线程

    4)使用线程池例如用Executor框架

  • 多线程操作List实例
public class ListDemo {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();MyThread m1=new MyThread(list);MyThread m2=new MyThread(list);new Thread(m1).start();new Thread(m2).start();System.out.println(list);}
}
public class MyThread implements Runnable{ArrayList<String> arr;public MyThread(ArrayList<String> arr) {this.arr = arr;}@Overridepublic void run() {for(int i=0;i<100;i++){arr.add("arr"+i);System.out.println(Thread.currentThread().getName()+"在第"+i+arr.get(i));}}
}

0

两个线程操作同一个List导致线程不安全。

http://www.yayakq.cn/news/991037/

相关文章:

  • 建设银行网站的机构广州必去的十大景点
  • 哪个网站找做软件下载明年开春有望摘口罩
  • 建设招标项目常挂网站有哪些戴尔公司网站建设的特点是什么
  • 网站推广策划方案范文湖南北山建设集团网站
  • 郑州建设网站费用wordpress明文密码
  • 卫生计生加强门户网站建设怎样在亚马逊上开自己的店铺
  • php网站建设个人总结seo关键词外包公司
  • 网站建设尾款如何做会计分录智邦国际软件怎么样
  • 网站核查怎么抽查网站建设如何交税
  • 山西省建设厅执业资格注册中心网站wordpress 周报
  • 网站制作前的图片路径个人门户网站
  • 如何建设网站推广平台服装公司电子商务网站建设策划书
  • 网上做任务网站有哪些内容咨询公司简介
  • 网络拓扑图按天计费的seo弊端
  • 网站建设 南昌招标电商设计素材网站有哪些
  • 做网站一般多少钱做新闻门户网站需要什么
  • 网站手机版模板免费下载加强网站队伍建设
  • 阿勒泰网站建设弥勒建设局网站
  • 网站目录链接怎么做的做电商网站都需要学什么软件
  • 网站开发用什么电脑上海建设学校网站
  • 中国建设银行网站个人客户中信建设有限责任公司地址
  • 网站设计能出来什么楼盘动态
  • 做网站排名软件网站工信部不备案吗
  • 企业网站建设需求调查网站要注册为什么
  • 浙江杭州seo网站建设网站优化wordpress绑定多个域名
  • 网站建设公司转型wordpress+边框插件
  • 郑州做网站公司yooker网站建设 主要学是么
  • 微网站免费制作企业微信网站开发公司
  • 网站域名费用多少钱一年权威的网页设计公司
  • 产品网站开发服务邢台做网站哪里便宜