ArrayList的size()问题

ArrayList的size()方法返回的是内部的size字段,为什么不返回 数组.length 呢??

2个回答

你要注意看源码,每次ArrayList扩充它的array是扩大1.5倍(代码是*2/3),

#假设头一次是array是15长度,1_.5倍取整是22个长度,你不可能刚好插入7个元素,
#经常性的有空余的部分,所以得用一个整数指定array里有元素的长度,返回的也是这个证书

数组用length表示大小。集合用size表示大小。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
数组长度问题,ArrayList的.size和普通数组的.length方法
我自己写了个BaseAdapter,在getCount中返回普通数组.length方法没问题,可是返回ArrayList的.size()方法就出错了 ,求大神解答啊啊啊啊
用ArrayList做一个具体实现类ArrayListStack。
import java.util.ArrayList; public class ArrayListStack<T> extends ArrayList<T> implements Stack<T> { ArrayList<T> arrayList =new ArrayList<>() ; @Override public void push(T obj) { arrayList.add(obj); } @Override public T get() { return arrayList.get(arrayList.size()-1); } @Override public T pop() { return arrayList.remove(arrayList.size()-1); } }
Java 怎么不用循环取ArrayList的前N个?
有size为20的ArrayList,取前10个以ArrayList返回,不使用循环。
ArrayList的ConcurrentModificationException
package list; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListDemo2 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("hello"); list.add("world"); list.add("java"); list.add("world"); list.add("java"); list.add("world"); list.add("world"); list.add("world"); list.add("world"); list.add("java"); list.add("world"); Iterator it = list.iterator(); for (int i = 0; i < list.size() - 1; i++) { for (int j = i + 1; j < list.size(); j++) { if (list.get(i).equals(list.get(j))) { list.remove(j); j--; } } } while (it.hasNext()) { System.out.println((String)it.next()); } } } 运行时报错:Exception in thread "main" java.util.ConcurrentModificationException,请问怎么解决/
Java解析源码之ArrayList初始化长度
我今天看了一下ArrayList的初始化,发现有一个问题 ArrayList<String>list=new ArrayList<String>( ); API 文档是这样说的, 构造一个初始容量为 10 的空列表。 但是我发现不同版本的源码写的方式不一样, 1.5直接将数组的长度定义为10, 源码如下 public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = (E[])new Object[initialCapacity]; } /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this(10); } 1.7给数组定义的长度为0,直到add或者addAll方法执行的时候才进行扩容为10(或者更大), 源码如下 //初始化 ```: public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } //添加元素 public boolean add(E o) { ensureCapacity(size + 1); // Increments modCount!! elementData[size++] = o; return true; } //扩容检查 private void ensureCapacityInternal(int minCapacity) { if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) { minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity); } ensureExplicitCapacity(minCapacity); } private void ensureExplicitCapacity(int minCapacity) { modCount++; // overflow-conscious code if (minCapacity - elementData.length > 0) grow(minCapacity); } //扩容 private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); } ``` 1.8同1.7 请问这是为什么,为什么不直接像1.5那样直接定义为10呢
java 关于将ArrayList存入文件与读取的问题
问题描述:这段代码是我未完成的主文件,本人java初学者,实在无法解决,渴求帮助。 这段程序是为了记录Task这个class并保存在timetracker.data中。程序首先要读取文件中的内容,我根据ObjectInputStream函数,想将文件内的内容的全部作为一个ArrayList整体读取出来,然后再在用户输入1时使用add()直接将新的Task添加到ArrayList中,最后在用户输入5的时候将这个ArrayList作为一个整体保存进去。以此来实现Task这个class的存取。 目前来看我的问题出在TaskList = (ArrayList<Task>)ois.readObject();这一行。 编译时会警报 未经检查的类型使用,找到java.lang.Object 需要java.util.ArrayList<Task> 我的疑问是 到底能不能通过readObject将文件内的所有内容读出,还是只能读出一个然后我的程序强行将这个Object转化成了ArrayList形式。 如果能,希望可以教我一下我写法的缺陷。 很抱歉浪费大家时间,感激不尽 import java.io.*; import java.text.*; import java.util.*; import java.lang.*; public class TimeTracker { public static void main(String[] args) throws IOException { byte[] option = new byte[100]; ArrayList<Task> TaskList = new ArrayList<Task>(); for(;;){ //nihao //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ObjectInputStream ois = null; try{ ois = new ObjectInputStream(new FileInputStream("timetracker.data")); TaskList = (ArrayList<Task>)ois.readObject(); } catch (ClassNotFoundException e){ System.out.println("(None)"); } catch (EOFException e){ // catch EOF System.out.println("have reached the end of file"); } finally{ if( ois != null ) { ois.close(); } int n = TaskList.size(); System.out.println(n); } //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ManuPrint manu = new ManuPrint(); manu.Print(); int numRead = System.in.read(option); if((char) option[0] == '1'||(char) option[0] == '2'||(char) option[0] == '3'||(char) option[0] == '4'||(char) option[0] == '5'){ if((char) option[0] == '1'){ System.out.println("Enter new task (blank line ends input, no text ends the current task):"); Date date = new Date(); SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat dt = new SimpleDateFormat("HH:mm"); //------------------------------record the last finished task //------------------------------record the last finished task // still not sloved multi lines BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; str=br.readLine(); // multi lines Task a = new Task((ft.format(date)),(dt.format(date)),"","",str); TaskList.add(a); } // option 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// if((char) option[0] == '5'){ FileOutputStream fout = new FileOutputStream("timetracker.data"); ObjectOutputStream out = new ObjectOutputStream(fout); try{ out.writeObject(TaskList); out.flush(); } catch(Exception e){ e.printStackTrace(); } finally{ try{ out.close(); } catch(Exception e){ e.printStackTrace(); } } System.out.print("******SEEEEEE UUUUU NEEEXT TIMEEE*********"); System.exit(0); } // option 5 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// } // if=1,2,3,4,5 else{ System.out.println("Invalid option!"); continue; } } //nihao } // main } //class
Arraylist<Byte> 到byte array 转换
有一个数组列表Arraylist<Byte>,想要转换为byte数组,用完下面的方法之后,报错如下: E/AndroidRuntime(5228): java.lang.NoClassDefFoundError:com.google.common.primitives.Bytes 具体实现代码: ArrayList<Byte> byteArrayList_song=new ArrayList<Byte>(); byte[] bytes_song_byte; for(int i=0;i<int_arraylist.size();i++) { bytes_song_byte=Bytes.toArray(byteArrayList_song); }
Java代码ArrayList删除其中值的问题,请看下面的代码有问题么?
//删除集合中的偶数数据 List<Integer> arr = new ArrayList(); for(int i = 0; i < 20; i++){ arr.add(i); } for(int i = 0; i <arr.size() ; i++){ if(arr.get(i)%2==0){ arr.remove(i); } } for(int i = 0; i < arr.size(); i++){ System.out.print(arr.get(i)+" "); } 以上的代码是否有问题?是不是出了越界的异常?应该改成这样么? List<Integer> arr = new ArrayList(); for(int i = 0; i < 20; i++){ arr.add(i); } for(int i = 0; i <arr.size() ; i++){ if(arr.get(i)%2==0){ arr.remove(i); i--; //加上这一句是否就没问题了? } } for(int i = 0; i < arr.size(); i++){ System.out.print(arr.get(i)+" "); }
ArrayList的越界错误
[code="java"] Map<Integer, List<ByteBuffer>> readCache = ServiceCache.getReadcache(); Set<Integer> sets = readCache.keySet(); for (Integer siteNum : sets) { List<ByteBuffer> buffers = readCache.get(siteNum); if (buffers.size() > 0) { ByteBuffer buffer = buffers.get(0); HeartBeatPackage hb = ServerDataParser.getHreatBeat(buffer); buffers.remove(0); } [/code] 大致代码如上,从map中取出一个ArrayList,在使用之前我判断buffer.size() >0 了。为什么还会报异常 Exception in thread "Thread-13" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.RangeCheck(ArrayList.java:547) at java.util.ArrayList.remove(ArrayList.java:387) at com.hongdian.rtu.process.DisData.run(DisData.java:38) at java.lang.Thread.run(Thread.java:662)
list集合遍历采用的是ArrayList还是LinkList问题?
想问下,我返回一个linklist,用list接收后,我没有手动转换成ArrayList的情况下,继续拿着这个list去遍历,那么程序遍历的时候会采用哪种集合类型去遍历? ArrayList 还是 LinkList public List<MarkerInfoUtil> sort(List<MarkerInfoUtil> list) { LinkedList<MarkerInfoUtil> linkedList = new LinkedList<>(); linkedList.addAll(list); MarkerInfoUtil markerInfoUtil = null; for (int j = 0; j < linkedList.size(); j++) { if (linkedList.get(j).getMacid().equals(macId)) { markerInfoUtil = linkedList.get(j); linkedList.remove(); j--; } } linkedList.addLast(markerInfoUtil); return linkedList; //排序 List<MarkerInfoUtil> sort =sort(infos); for (MarkerInfoUtil info : sort) { }
JDK中ArrayList源码问题
private static int hugeCapacity(int minCapacity) { if (minCapacity < 0) // overflow throw new OutOfMemoryError(); return (minCapacity > MAX_ARRAY_SIZE) ? Integer.MAX_VALUE : MAX_ARRAY_SIZE; } 上面的源码hugeCapacity方法中为什么会出现minCapacity<0这种情况
java中的arraylist中的contains源码
public boolean contains(Object o) { return indexOf(o) >= 0; } public int indexOf(Object o) { if (o == null) { for (int i = 0; i < size; i++) if (elementData[i] ==null) return i; } else { for (int i = 0; i < size; i++) if (o.equals(elementData[i] )) return i; } return -1; 这是ArrayList中 contains 源码 我想问下 那个 if(o==null)是啥意思 在实际操作是干啥的 contains(O)传值时O如果是null的话会报错的
关于ArrayList的使用问题~~~~~~~
:( 各位高手大家好,本人刚学Java,对很多东西都不是很清楚,这几天我照着书上敲了好几个程序,放到Eclipse里去编译(注:我的Eclipse是3.2中文版的),老是显示出错,程序如下(出问题的语句用红色标出): /*!Begin Snippet:file*/ import java.util.*; import java.text.*; /** * Maintains a collection of {@link Borrower} objects. * * @author XXX * @version 1.0.0 * @see Borrower */ public class BorrowerDatabase implements [color=red]Iterable<Borrower>[/color] { //问题是:放到第一个上时显示,类型Iterable不是通用的;不能使用参数<Borrower>将其参数化!!! //放到第二个,即<Borrower>上时显示,语法错误,仅当源级别为5.0时已参数化的类型方可用。 /* Collection of <code>Borrower</code> objects.*/ [color=red]private ArrayList<Borrower> borrowers;[/color] //问题是:放到第一个上时显示,类型ArrayList不是通用的;不能使用参数<Borrower>将其参数化!!! //放到第二个,即<Borrower>上时显示,语法错误,仅当源级别为5.0时已参数化的类型方可用。 /** * Constructs an empty collection of {@link Borrower} * objects. */ public BorrowerDatabase() { this.borrowers = new ArrayList<Borrower>(); } /** * Adds a {@link Borrower} object to this collection. * * @param borrower the {@link Borrower} object. */ public void addBorrower(Borrower borrower) { this.borrowers.add(borrower); } /** * Returns an iterator over the borrowers in this database. * * return an {@link Iterator} of {@link Borrower} */ public [color=red]Iterator<Borrower> [/color] iterator() { //问题同上~~~~~~~~~~~ return this.borrowers.iterator(); } /** * Returns the {@link Borrower} object with the specified * <code>id</code>. * * @param id the id of the borrower. * @return The {@link Borrower} object with the specified id. * Returns <code>null</code> if the object with the * id is not found. */ public Borrower getBorrower(String id) { for (Borrower borrower : this.borrowers) { if (borrower.getId().equals(id)) { return borrower; } } return null; } /** * Returns the number of {@link Borrower} objects in this collection. * * @return the number of {@link Borrower} objects in this collection. */ public int getNumberOfBorrowers() { return this.borrowers.size(); } } /*!End Snippet:file*/ 注:类Borrower已存在并成功编译。 这是为什么啊,我已经在网上查了很久,也问了很多人,但没人知道,郁闷至极~~~~~~~~~ 望各位能够不吝赐教,小生将感激不尽啊!!! [b]问题补充:[/b] 1.Borrower类已存在啊,并且已引入到该包下面,但还是不行,Eclipse一直报错,哎~~~~~ 2.依据lixc的答复我也试了,但没发现Compiler comliance level啊!真是惭愧,能否麻烦你讲具体点在哪?谢谢了~~~~~~~~~
Arraylist的一个问题,从数据库拿到多组数据但是只能读出一组
这是数据库select方法public List<Gameperson> getgameperson() { // TODO Auto-generated method stub List<Gameperson> list = new ArrayList<Gameperson>(); Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = DBO.getconnection(); st =(Statement) conn.createStatement(); String sql = "select * from gameperson"; rs = (ResultSet) st.executeQuery(sql); if(rs.next()){ Gameperson gp = new Gameperson(); gp.setId(rs.getInt("id")); gp.setCompetitorId(rs.getInt("competitorId")); gp.setGameId(rs.getInt("gameId")); list.add(gp); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ DBO.close(st, rs, conn); } return list; } 这是拿出方法: <% List<Gameperson> list = new ArrayList(); GamepersonDao gpo = new GamepersonDaoImpl(); list = gpo.getgameperson(); if(list!=null){ for (int i=0;i<list.size();i++){ Gameperson gp = list.get(i); %> <p> <%=gp.getId()%></p> <p> <%=gp.getGameId() %></p> <p><%=gp.getCompetitorId()%></p> <% } } %> 现在数据库有很多组数据,但是为什么页面只能显示遍历一组?? 新手求大神解答
关于Java的ArrayList数据插入,删除等操作
import java.util.*; public class TestArrayList { public static void main(String []args) { ArrayList al=new ArrayList(); System.out.println("数组列表对象al的大小:"+al.size()); al.add("何"); al.add("叶"); al.add("是"); al.add("蠢"); al.add("货"); System.out.println("数组列表对象al赋值后的大小:"+al.size()); System.out.println("数组列表对象al赋值后的内容:"+al); al.add(2,"不"); al.add(6,"我"); al.add(7,"不"); al.add(8,"信"); System.out.println("数组列表对象al添加元素后的大小:"+al.size()); System.out.println("数组列表对象al添加元素后的内容:"+al); al.remove(2); al.remove("我"); al.remove("不"); al.remove(8); System.out.println("数组列表对象al删除元素后的大小:"+al.size()); System.out.println("数组对象元素al删除元素后的内容:"+al); } } 在用控制台编译时,显示说使用了未经检查或不安全的操作,详细信息请使用Xlnt:unchecked重新编译。是什么意思? ``` ```
请问arraylist的元素值跟hashmap的索引值一样就能够通过元素值获取到hashmap的?
请问arraylist的元素值跟hashmap的索引值一样就能够通过元素值获取到hashmap的key跟value呢?? 两个索引相同能获取?? 求解答 HashMap<Integer, String> hm = new HashMap<>(); //存储索引和扑克牌 ArrayList<Integer> list = new ArrayList<>(); //存储索引 --------------------代码如下-------------- //买一副牌 String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; String[] color = {"方片","梅花","红桃","黑桃"}; HashMap<Integer, String> hm = new HashMap<>(); //存储索引和扑克牌 ArrayList<Integer> list = new ArrayList<>(); //存储索引 int index = 0; //索引的开始值 for(String s1 : num) { for(String s2 : color) { hm.put(index, s2.concat(s1)); //将索引和扑克牌添加到HashMap中 list.add(index); //将索引添加到ArrayList集合中 index++; } } hm.put(index, "小王"); list.add(index); index++; hm.put(index, "大王"); list.add(index); //洗牌 Collections.shuffle(list); //发牌 TreeSet<Integer> gaojin = new TreeSet<>(); TreeSet<Integer> longwu = new TreeSet<>(); TreeSet<Integer> me = new TreeSet<>(); TreeSet<Integer> dipai = new TreeSet<>(); for(int i = 0; i < list.size(); i++) { if(i >= list.size() - 3) { dipai.add(list.get(i)); //将list集合中的索引添加到TreeSet集合中会自动排序 }else if(i % 3 == 0) { gaojin.add(list.get(i)); }else if(i % 3 == 1) { longwu.add(list.get(i)); }else { me.add(list.get(i)); } } //看牌 lookPoker("A", gaojin, hm); lookPoker("B", longwu, hm); lookPoker("C", me, hm); lookPoker("底牌", dipai, hm); } public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer, String> hm) { System.out.print(name + "的牌是:"); for (Integer index : ts) { System.out.print(hm.get(index) + " "); } System.out.println();
ArrayList集合中的问题
package com.StuInfo; import java.util.*; public class Test { static ArrayList<Students> list=new ArrayList<Students>(); static Scanner input=new Scanner(System.in); public static void main(String[] args) { manageLogin(); } // 系统菜单 public static void manageLogin() { System.out.println("学员信息管理信统"); System.out.println("============"); System.out.println("1.录入学员信息"); System.out.println("2.根据学号查询学员信息"); System.out.println("3.修改学员信息"); System.out.println("4.根据学号删除学员信息"); System.out.println("5.统计学员平均考试成绩"); System.out.println("6.退出系统"); System.out.println("请输入菜单项:"); int num=input.nextInt(); switch(num){ case 1: addStu();break; case 2:checkById();break; case 3:update(); break; case 4:delete(); break; case 5: avg();break; case 6:exit(); break; } } //录入学员信息 public static void addStu(){ String answer=""; do{ answer="y"; Students stu=new Students(); System.out.print("请输入学生的学号: "); String stuid=input.next(); System.out.println("请输入学生的姓名:"); String stuname=input.next(); System.out.println("请输入学生的年龄:"); int age=input.nextInt(); System.out.println("请输入学生的成绩"); int score=input.nextInt(); if(list.isEmpty()){ stu.setId(stuid); stu.setName(stuname); stu.setAge(age); stu.setScore(score); list.add(stu); System.out.println("录入成功!"); manageLogin(); }else if(getById(stuid)==null){ stu.setId(stuid); stu.setName(stuname); stu.setAge(age); stu.setScore(score); list.add(stu); System.out.println("录入成功!"); manageLogin(); }else{ System.out.println("此学生已经存在!"); manageLogin(); } System.out.println("你是否要继续选择操作?y/n"); answer=input.next(); }while(answer.equals("y")); } //根据学号查询学员信息 public static void checkById(){ Students stu=new Students(); System.out.print("请输入您要查询学生的学号:"); String stuid=input.next(); Students s=getById(stuid); if(list.isEmpty()){ System.out.println("该学生不存在"); manageLogin(); }else if(s!=null){ Students ww=getById(stuid); System.out.println("该学员信息为:\n"); System.out.println("学号:"+ww.getAge()); System.out.println("姓名:"+ww.getName()); System.out.println("年龄:"+ww.getAge()); System.out.println("成绩:"+ww.getScore()); manageLogin(); } } //修改学员信息 public static void update(){ System.out.print("请输入您要修改学生的学号:"); int stuid=input.nextInt(); Students s=getById(stuid); //此行中getById方法报错,怎么回事? if(list.isEmpty()){ System.out.println("无学生信息!"); }else if(s!=null){ System.out.println("改后姓名:"); String name=input.next(); System.out.println("改后年龄:"); int age=input.nextInt(); System.out.println("改后成绩:"); int score=input.nextInt(); s.setName(name); s.setAge(age); s.setScore(score); System.out.println("修改成功!"); manageLogin(); }else{ System.out.println("该学生不存在!"); manageLogin(); } } //根据学号删除学员信息 public static void delete() { System.out.println("请输入所要删除的学号:"); String stuid=input.next(); Students s=getById(stuid); if(list.isEmpty()){ System.out.println("尚未存入信息!"); manageLogin(); }else if(s!=null){ list.remove(s); System.out.println("删除成功"); manageLogin(); }else{ System.out.println("该学生不存在!"); manageLogin(); } } //统计学员平均考试成绩 public static void avg(){ System.out.println("平均成绩为:"); int num=list.size(); int sun=0; if(list.isEmpty()){ System.out.println("未录入学生的信息!"); }else{ for(Students s:list){ //此行s:list 什么意思? sun+=s.getScore(); } System.out.println(sun/num); manageLogin(); } } //退出系统 public static void exit(){ System.out.println("你确定要退出系统吗?"+"y/n"); String answer=input.next(); if(answer.equalsIgnoreCase("y")){ System.exit(0); }else{ manageLogin(); } } public static Students getById(String id){ for(Students s:list){ if(s.getId().equals(id)){ return s; } } return null; } }
arraylist的增添覆盖问题 new Student()已放到循环内 还是覆盖前边的输入怎么解决
import java.util.Scanner; import java.util.ArrayList; public class Student{ static String sNo,sSex,sName; static int sAge,sJava; //构造方法初始化成员变量 Student(String sNo,String sSex,String sName,int sAge,int sJava){ this.sNo=sNo; this.sSex=sSex; this.sName=sName; this.sAge=sAge; this.sJava=sJava; } //创建get方法 static String getNo(){ return sNo; } static String getName(){ return sName; } static String getSex(){ return sSex; } static int getAge(){ return sAge; } static int getJava(){ return sJava; } //构造一个输出方法 public String toPrint(){ return "学号:"+sNo+" "+"名字:"+sName+" "+"性别:"+sSex+" "+"年龄:"+sAge+" "+"java成绩:"+sJava; } public static void main(String[] args){ ArrayList<Student> list=new ArrayList<Student>();//构造arraylist方法 Scanner input=new Scanner(System.in); for(int i=0;i<2;i++){//循环输入学生信息 System.out.println("请输入学号:"); String no=input.next(); System.out.println("请输入名字:"); String name=input.next(); System.out.println("请输入性别:"); String sex=input.next(); System.out.println("请输入年龄:"); int age=input.nextInt(); System.out.println("请输入java成绩(整数):"); int java=input.nextInt(); Student a=new Student(no,sex,name,age,java);//将信息录入Student构造方法 list.add(a);//增添信息 } int resultsMax=0,resultsMin=list.get(0).getJava();//声明两个变量得到最大、最小成绩 int max=0,min=0;//声明两个变量,存最大小值所在的数组索引 for(int j=0;j<list.size();j++){//使用arraylist size方法判断动态数组长度 System.out.println(list.get(j).toPrint()); if(list.get(j).getJava()>resultsMax){//判断java最大数据 resultsMax=list.get(j).getJava(); max=j; } if(list.get(j).getJava()<resultsMin){//判断java最小数据 resultsMin=list.get(j).getJava(); min=j; } } System.out.println("java成绩最高的学生信息:"+list.get(max).toPrint()); System.out.println("java成绩最低的学生信息:"+list.get(min).toPrint()); } }
小白求教arraylist问题
for(int c=0;c<date1.size();c++){ if(date1.get(c).equals(date1.get(c+1))){ a=(int) value1.get(c); sum=a+sum; System.out.println("a:"+a+"sum:"+sum); }else{ a=(int) value1.get(c); sum=a+sum; System.out.println("a:"+a+"sum:"+sum); date2.add(date1.get(c)); value2.add(sum); sum=0; } } 我日期数组,判断第一个日期等于下一个日期,判断到最后怎么办,最后一个日期的下一个日期是空的,报数组越界异常
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问