java集合 ArrayList问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java集合 ArrayList问题相关的知识,希望对你有一定的参考价值。
代码如下:
ArrayList list = new ArrayList(50);
for(int i = 0; i < 50; i++)
list.add(new Integer((int)(41 * Math.random() + 10)));
System.out.println(list);
输出结果:[37, 16, 22, 44, 11, 33, 45, 45, 20, 24, 10, 30, 21, 33, 25, 28, 11, 33, 13, 14, 43, 26, 14, 15, 18, 21, 13, 25, 48, 37, 38, 10, 49, 25, 46, 49, 16, 47, 44, 10, 50, 38, 15, 23, 24, 28, 41, 41, 18, 41]
请问为什么是这个结果啊?
list是一个引用,System.out.println(list); ArrayList没有重写toString()方法, 这一行不是应该调用Object 的toString()方法,输出类名和地址吗?
另外如果我这样写System.out.println(list.get(10)); 也可以得到正确结果。 我放进去的是Integer包装类,取出来的应该也是Integer类吧? 但是为什么不需要用intValue()方法就可以直接得到正确结果?
请大家帮帮忙,谢谢了。
从JDK 1.5开始,java有了自动打包,自动解包功能,Interger 对象可以直接自动转换成int,也就是说8中基本类型可以跟对应的基本类对象之间自动转换。 参考技术A (int)(41 * Math.random() + 10) 这部分转成了int 类型而new Integer((int)(41 * Math.random() + 10))这部分就把他转成intger类型
你输出的是list值是object类型的吧 参考技术B ArrayList的toString()方法继承于AbstractCollection类的toString()方法(方法内容Returns a string representation of this collection. The string representation consists of a list of the collection's elements in the order they are returned by its iterator, enclosed in square brackets ("[]"). Adjacent elements are separated by the characters ", " (comma and space). Elements are converted to strings as by String.valueOf(Object). ),而不是你所说的Object的toString()方法,至于后面那个问题,我觉得list.get()取出来的事integer类,然后系统println()方法调用了integer的toString()方法(方法内容Returns a String object representing this Integer's value)。 参考技术C JDK5·0之后具有自动打包和解包功能,你查查这两个概念。
JAVA集合 - ArrayList
集合可实现增删改查,下面的项目用ArrayList集合来做实例,ArrayList集合几个常用的函数
.size() 集合大小
.add() 添加对象到集合
.remove() 删除集合的对象
用到的其他函数
.equals() 字符串比较
System.exit(-1) 退出系统,非零
1 /* 2 * 作者:白客C 3 * 时间:2020年02月28日 4 * 内容:简单员工管理系统 5 */ 6 7 package com.beekc.www; 8 import java.io.*; 9 import java.util.*; 10 11 public class Beekc { 12 public static void main(String[] args) throws Exception{ 13 14 //创建EmpManage 15 EmpManage em = new EmpManage(); 16 17 //输入流 18 InputStreamReader isr = new InputStreamReader(System.in); 19 BufferedReader br = new BufferedReader(isr); 20 21 //简易菜单 22 em.menu(); 23 while (true) 24 { 25 26 System.out.print("请选择你要进行的操作:"); 27 //接收选择项 28 String operType = br.readLine(); 29 30 if (operType.equals("1")) { 31 32 System.out.print("请输入编号:"); 33 String empNo = br.readLine(); 34 System.out.print("请输入名字:"); 35 String name = br.readLine(); 36 System.out.print("请输入工资:"); 37 Float sal = Float.parseFloat(br.readLine()); 38 39 Emp emp =new Emp(empNo,name,sal); 40 em.addEmp(emp); 41 42 }else if (operType.equals("2")) 43 { 44 System.out.print("请输入编号:"); 45 String empNo = br.readLine(); 46 em.showInfo(empNo); 47 48 }else if (operType.equals("3")) 49 { 50 System.out.print("请输入编号:"); 51 String empNo = br.readLine(); 52 System.out.print("请输入新工资:"); 53 Float sal = Float.parseFloat(br.readLine()); 54 em.updateSal(empNo,sal); 55 56 }else if (operType.equals("4")) 57 { 58 System.out.print("请输入编号:"); 59 String empNo = br.readLine(); 60 em.delEmp(empNo); 61 62 }else if (operType.equals("5")) 63 { 64 em.showAll(); 65 } 66 } 67 } 68 } 69 70 //雇员管理类 71 class EmpManage{ 72 private ArrayList al = null; 73 74 //构造函数 75 public EmpManage() 76 { 77 al = new ArrayList(); 78 } 79 80 //菜单 81 public void menu() 82 { 83 System.out.println("1.添加一个雇员"); 84 System.out.println("2.查找一个雇员"); 85 System.out.println("3.修改一个雇员工资"); 86 System.out.println("4.删除一个雇员"); 87 System.out.println("5.查询所有雇员"); 88 } 89 90 //加入员工 91 public void addEmp(Emp emp) 92 { 93 //添加对象到集合 94 al.add(emp); 95 } 96 97 //显示员工信息 98 public void showInfo(String empNo) 99 { 100 //遍历整个ArrayList 101 for(int i = 0 ; i < al.size() ; i++) 102 { 103 //取出Emp对象 104 Emp emp =(Emp)al.get(i); 105 106 //比较编号,注意字符串比较用equals() 107 if(emp.getEmpNo().equals(empNo)) 108 { 109 System.out.println("该员工信息是:"); 110 System.out.println("编号:" + empNo); 111 System.out.println("名字:" + emp.getName()); 112 System.out.println("工资:" + emp.getSal()); 113 } 114 } 115 } 116 117 //显示所有员工信息 118 public void showAll() 119 { 120 for(int i = 0 ; i < al.size() ; i++) 121 { 122 System.out.print("编号 "); 123 System.out.print("姓名 "); 124 System.out.println("工资"); 125 } 126 127 for(int i = 0 ; i < al.size() ; i++) 128 { 129 Emp emp = (Emp)al.get(i); 130 System.out.print(emp.getEmpNo() + " "); 131 System.out.print(emp.getName() + " "); 132 System.out.println(emp.getSal()); 133 } 134 } 135 136 //修改员工薪水 137 public void updateSal(String empNo ,float newSal) 138 { 139 for(int i = 0 ; i < al.size() ; i++) 140 { 141 Emp emp = (Emp)al.get(i); 142 if(emp.getEmpNo().equals(empNo)) 143 { 144 //修改成功 145 emp.setSal(newSal); 146 } 147 } 148 } 149 150 //删除员工 151 public void delEmp(String empNo) 152 { 153 for(int i = 0 ; i < al.size() ; i++) 154 { 155 Emp emp = (Emp)al.get(i); 156 if(emp.getEmpNo().equals(empNo)) 157 { 158 //删除集合里的对象 159 al.remove(i); 160 //al.remove(emp); 161 } 162 } 163 } 164 //-------------------------- 165 } 166 167 //雇员类 168 class Emp{ 169 //学号 170 private String empNo; 171 //姓名 172 private String name; 173 //薪水 174 private float sal; 175 176 //构造函数 177 public Emp(String empNo, String name, float sal) 178 { 179 this.empNo = empNo; 180 this.name = name; 181 this.sal = sal; 182 } 183 184 public String getEmpNo() { 185 return empNo; 186 } 187 188 public void setEmpNo(String empNo) { 189 this.empNo = empNo; 190 } 191 192 public String getName() { 193 return name; 194 } 195 196 public void setName(String name) { 197 this.name = name; 198 } 199 200 public float getSal() { 201 return sal; 202 } 203 204 public void setSal(float sal) { 205 this.sal = sal; 206 } 207 }
以上是关于java集合 ArrayList问题的主要内容,如果未能解决你的问题,请参考以下文章