arraylist

(算法学习)兵乓球比赛的分制

拟墨画扇 提交于 2020-03-03 05:08:51
乒乓球比赛分为11分制和21分制,(得分达到了11分或者21分为赢一局)下面输入比赛的获胜情况,分别输出11分制和21分制的比赛结果 其中输入数据中W代表甲得分,L代表乙得分,E代表输入结束,可以多行输入,并忽视E以后的内容。 例如: 输入: WWWWWWWWWWWWWWWWWWWW WWWWWLEEE 输出:11分制 第1局: 11:0 第2局:11:0 第3局:3:1 21分制 第1局: 21:0 第2局:4:0 输入: WWWWWWWLWLWWWWWWWWWWL LWWWWWWLEEE 输出: 11分制 第1局:9:2 第2局:9:2 第3局:6:1 21分制 第1局:18:3 第2局:6:2 思路: 1)检验输入,当遇到E就停止; 2)将E以后所有的及其E都删除; 3)11分制:将字符串划分成11,11,这样,然后开始计数,最后输出; 4)同样21分制---- 代码分享: package StringDemo; //乒乓球比赛 //乒乓球比赛分为11分制和21分制,(得分达到了11分或者21分为赢一局)下面输入比赛的获胜情况,分别输出11分制和21分制的比赛结果 //其中输入数据中W代表甲得分,L代表乙得分,E代表输入结束,可以多行输入,并忽视E以后的内容。 //例如: //输入: // WWWWWWWWWWWWWWWWWWWW // WWWWWLEEE //输出:11分制

数组介绍

倾然丶 夕夏残阳落幕 提交于 2020-03-03 02:19:54
什么是数组? 数组是一种线性表数据结构,它用一组连续的的内存空间,来存储一组具有相同类型的数据。 数组如何实现随机访问? 基于数组的两大特性:线性表结构和连续的内存空间和相同类型的数据,使得数组可以通过下标直接访问数组元素,从而具有“随机访问”的特性。 具体实现方法: 当计算机需要随机访问数组中的某个元素时,通过寻址公式计算出该元素存储的内存地址,寻址公式如下所示: a[i]_address = base_address + i * data_type_size 其中 i 为数组元素的下标(从0开始),data_type_size 表示数组中每个元素的大小,假如数组中存储的是 int 类型数据,那么 data_type_size 就为4个字节。 数组查找的时间复杂度 根据下标随机访问的时间复杂度为 O(1)。 注意:前提条件是根据下标进行的随机访问,如果是在下标不确定的情况下查找某个元素,那么即便是已经排好序的数组,你用二分查找,时间复杂度也是 O(logn)。 低效的“插入”和“删除” 数组为了保持内存数据的连续性,会导致插入、删除操作比较低效,具体是为什么呢? 插入操作 每当在数组中插入一个新元素的时候,为了给这个新插入的元素挪出一个位置,我们可能需要移动大量的元素。 假设数组的长度为 n,如果在数组的末尾插入元素,那就不需要移动数组了,所以最好时间复杂度为 O(1)

对于ListNode的学习

笑着哭i 提交于 2020-03-03 01:47:21
import java.util.ArrayList; import java.util.Stack; public class Solution { public ArrayList printListFromTailToHead(ListNode listNode) { ArrayList list = new ArrayList();//返回一个列表 Stack stack = new Stack();//创造一个栈存储数据 while (listNode != null) {//当节点不为空的时候,执行 stack.push(listNode.val);//把节点中的数据进栈内存 listNode = listNode.next;//然后指针指向下一个栈内存 } while (!stack.empty()) { //如果栈内存不为空的时候 list.add(stack.pop());//就会把栈内存的数据释出进list表中 } return list; } } https://blog.csdn.net/feinifi/article/details/94741276?depth_1-utm_source=distribute.pc_relevant_right.none-task&utm_source=distribute.pc_relevant_right.none

201521123037 《Java程序设计》第8周学习总结

淺唱寂寞╮ 提交于 2020-03-02 20:53:02
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 1.2 选做:收集你认为有用的代码片段 1、 String[] list1=str.split(" "); for(int i=0;i<list1.length;i++){ if(!list1[i].equals("")) list11.add(list1[i]); } 2、 ArrayList<Map.Entry<String, Integer>> list=new ArrayList<Map.Entry<String, Integer>>(treemap.entrySet()); Collections.sort(list,new Comparator<Map.Entry<String, Integer>>(){...}; 3、 Set<String> set=treemap.keySet(); java.util.Iterator<String> it=set.iterator(); while(it.hasNext()){ String s=it.next(); System.out.println(s+"="+treemap.get(s)); } 4、 public static <T extends Comparable> T max(List<T> list){ return

[Java] 学生与教师管理系统

我的未来我决定 提交于 2020-03-02 19:06:48
目录 1. 主要功能 2. Java 实现 a. MainApp.java b. Utils.java c. Person.java d. Teacher.java e. Student.java 1. 主要功能 主菜单选择管理学员/教师信息; 可以添加、修改、删除、查询学员/教师信息; 可以返回主菜单; 2. Java 实现 a. MainApp.java import java . util . ArrayList ; import java . util . Scanner ; public class MainApp { public static void main ( String [ ] args ) { Scanner sc = new Scanner ( System . in ) ; //学生集合 ArrayList < Student > stuList = new ArrayList < > ( ) ; //教师集合 ArrayList < Teacher > teaList = new ArrayList < > ( ) ; //主菜单 while ( true ) { System . out . println ( "1.学员信息管理 2.教师信息管理 3.退出" ) ; int op = sc . nextInt ( ) ; switch ( op

Java基础11java集合

谁说胖子不能爱 提交于 2020-03-02 18:32:15
package com.atguigu.java2; import org.junit.Test; import java.util.ArrayList; import java.util.Collection; import java.util.Date; /** * 一、集合框架的概述 * * 1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。 * 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中) * * 2.1 数组在存储多个数据方面的特点: * > 一旦初始化以后,其长度就确定了。 * > 数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了。 * 比如:String[] arr;int[] arr1;Object[] arr2; * 2.2 数组在存储多个数据方面的缺点: * > 一旦初始化以后,其长度就不可修改。 * > 数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便,同时效率不高。 * > 获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用 * > 数组存储数据的特点:有序、可重复。对于无序、不可重复的需求,不能满足。 * * 二、集合框架 * |----Collection接口:单列集合,用来存储一个一个的对象 * |----List接口

深入理解ArrayList

此生再无相见时 提交于 2020-03-02 11:31:17
什么是ArrayList? ArrayList的实现原理其实就是数组(动态数组),ArrayList的介绍及简单使用方法 动态数组与一般数组有什么区别? 与Java中的数组相比,ArrayList的容量能动态地增长 ArrayList效率怎么样? ArrayList不是线程安全的,所以效率比较高 ,但是只能用于单线程的环境中,那多线程呢?别急,文末会讲到 ArrayList主要继承哪些类实现了哪些接口? ArrayList主要继承了AbstractList类,实现了List、RandomAccess、Cloneable、Serializable接口 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable RandomAccess的意思是其拥有快速访问的能力,ArrayList可以以 O(1)[^1]的时间复杂度去根据下标访问元素。由于ArrayList底层结构是数组,所以它占据了一块连续的内存空间,其长度就是数组的大小,因此它也有数组的缺点,在空间效率不高,但是也有它的优点,就是查询速度快,时间效率较快 ArrayList的常量与变量有哪些? // 序列ID private static final long

(第一期)大厂面试系列_ArrayList 公众号java源码栈

拥有回忆 提交于 2020-03-02 11:15:48
目录: 1.ArrayList是什么?可以用来干嘛? 2.ArrayList数组的初始大小长度是怎样的?长度不够时怎么办. 3.为什么说数组增删速度慢,增删时ArrayList是怎么实现的? 4.ArrayList(int initialCapacity)是初始化数组大小吗? 5.ArrayList是线程安全的么?怎样线程安全的使用ArrayList呢? 6.ArrayList适合用来做队列么? 7.removeAll, retrain, clean三个方法有什么不同? 8.ArrayList的浅复制和深复制有什么不同?分别怎样实现? 1.ArrayList是什么?可以用来干嘛? ArrayList就是数组列表,主要用来装载数据,当我们装载的是基本类型的数据时int,long,boolean,short,byte…的时候我们只能存储他们对应的包装类,它的主要底层实现是数组Object[] elementData。 与它类似的是LinkedList,和LinkedList相比,它的查找和访问元素的速度较快,但新增,删除的速度较慢。 小结 :ArrayList底层是用数组实现的存储。 特点 :查询效率高,增删效率低,线程不安全。使用频率很高。 正常使用的场景中,都是用来查询,不会涉及太频繁的增删,如果涉及频繁的增删,可以使用LinkedList,如果你需要线程安全就使用Vector

java ArrayList集合 & LinkedList集合 & Vector集合

匆匆过客 提交于 2020-03-02 11:00:08
ArrayList 集合 此实现不是同步的,就意味着,它是多线程模式,那么速度就很快。 底层源码可以看出它是通过数组的赋值来实现增删的,所以说效率低下。 如果这个需求查询比较多,那么就使用ArrayList集合 如果增删比较多,那么就使用LinkedList集合,因为ArrayList集合效率就会比较低下了。 LinkedList 集合 概述 此实现不是同步的,就意味着,它是多线程模式,那么速度就很快。 它是List接口的一个链表实现。(有大量操作首尾元素的方法) 方法: push() 方法等效于addFirst(E) addLast() 等效于add() 例子: 当清空完毕元素之后,再继续获取元素的时候会抛出异常 Vector 概述: 可实现可增长的对象数组。 与新collection实现不同,vector是同步的。同步的就意味着它是单线程,单线程就意味着它的速度较慢,所以在1.2版本之后,被List集合取代了。 来源: CSDN 作者: _清风明月 链接: https://blog.csdn.net/HDZ1821/article/details/104606830

java中的List详解以及代码示例

爷,独闯天下 提交于 2020-03-01 22:39:43
一:概念 List是Java集合Collection中的一个接口,一般用ArrayList类和LinkedList类去实现这个接口。 Collection集合还有其他接口:Map,Set(在我的另一篇博客) 二:LIST的使用 List的常用方法 boolean add(E e) //尾插 e void add(int index, E element) //将 e 插入到 index 位置 boolean addAll(Collection<? extends E> c) //尾插 c 中的元素 E remove(int index) //删除 index 位置元素 boolean remove(Object o) // 删除遇到的第一个 o E get(int index) //获取下标 index 位置元素 E set(int index, E element) //将下标 index 位置元素设置element void clear() //清空 boolean contains(Object o) //判断 o 是否在线性表中 int indexOf(Object o) //返回第一个 o 所在下标 int lastIndexOf(Object o) //返回最后一个 o 的下标 List<E> subList(int fromIndex, int toIndex) /