码讲——Java集合基础
2015-07-01 22:48
363 查看
public class CollectionDemo { private static final long LEVEL = 20150701;//本码讲版本 //======================集合基础================= @Test public void testCollection() { /* * add size isEmpty */ Collection c1 = new ArrayList(); Collection<String> c2 = new HashSet<String>(); System.out.println("添加元素成功否:"+c1.add("str1")); System.out.println("当前集合中元素数量为:" + c1.size() + " 元素为:" + c1); System.out.println("当前集合" + c1.isEmpty() + "空"); c1.clear();// 清除所有元素 System.out.println("集合已清空!" + c1.size()); System.out.println("当前集合" + c1.isEmpty() + "空"); /* * 集合中放的是句柄,其符合别名规则 */ Point p1 = new Point(1, 2); c1.add(p1); p1.setX(4); System.out.println("随保存的对象改变: " + c1); /* * contains方法 */ Point p3 = new Point(4, 2); System.out.println("contains方法使用元素的equals比较:" + c1.contains(p3)); c1.clear(); /* * addAll()方法 */ c1.add("java"); c1.add("vb"); c1.add(".net"); c2.add("java"); c2.add("php"); c2.add("objective-c"); //如添加后有变动,将返回true System.out.println("addAll方法: " + c1.addAll(c2)+c1); c1.clear(); c2.clear(); /* * containsAll方法 */ c1.add("java"); c1.add("vb"); c1.add(".net"); c2.add("java"); c2.add(".net"); System.out.println("containsAll方法:" + c1.containsAll(c2)); List list3 = new ArrayList(); System.out.println("containsAll(null)为:"+list3.containsAll(null));// /* * remove与removeAll方法 */ System.out.println("原始c1" + c1); System.out.println("删除成功否:"+c1.remove("java")); System.out.println("remove方法执行后c1:" + c1); c1.add("php"); c1.add("objective-c"); c2.add("vb"); System.out.println("原始c1" + c1); c1.removeAll(c2); System.out.println("removeAll执行后:" + c1); // remove符合equals原则,如集合中存在多个equals为true 元素,则删除第一个 c1.add("php"); String str = new String("php"); c1.remove(str); System.out.println(c1); /* * 集合的遍历 */ Iterator<String> iter2 = c2.iterator(); while (iter2.hasNext()) { String str1 = iter2.next();//无泛型需要手动强转 if ("java".equals(str1)) { iter2.remove(); } else { System.out.println("iterator遍历2" + str1); } } // 增强for循环 for (String str3 : c2) { System.out.println("增强for循环:" + str3); } } /** * 泛型类的定义和使用 */ @SuppressWarnings({ "unused", "rawtypes", "unchecked" }) public void testCell() { /** * 泛型 */ class Cell<T> { private T x; private T y; public Cell(T x, T y) { this.x = x; this.y = y; } public T getX() { return x; } public void setX(T x) { this.x = x; } public T getY() { return y; } public void setY(T y) { this.y = y; } } /* * 泛型的赋值和使用 */ Cell<Integer> c = new Cell<Integer>(1, 2); int x = c.getX();//自动拆包 c.setX(123);//自动装箱 //将有泛型的对象赋值给没有泛型的对象会丢失泛型,变为Object Cell c3 = c; c3.setX("123"); //无泛型的对象取出值时需要强制转换 String str = (String) c3.getX(); //c3的改变导致c的改变,内部存储的实际是String运行期报出类转换异常 //x = c.getX(); } }
相关文章推荐
- 深入Java集合学习系列:HashMap的实现原理
- JavaEE——day01——html
- java中用数组模拟的酒店管理系统
- 码讲——Java字符流
- Java Servlet 技术简介
- Spring IOC-BeanFactory的继承体系结构
- Java文件操作
- Spring的事务管理的几种方法
- Struts2开发遇到的问题之多文件上传
- Java内部类详解
- 2015070103 - EffactiveJava笔记 - 第47条 了解和使用类库(2)
- 排序算法之归并排序Java版
- 排序算法之快速排序Java版
- Java每日编程day2
- Java基础之简单内存管理
- 使用java的Calendar对象获得当前日期的上几个度开始、结束时间
- 排序算法之冒泡排序Java版
- Java面向对象之类
- 2015070102 - EffactiveJava笔记 - 第47条 了解和使用类库(1)
- java打包