您的位置:首页 > 编程语言 > Java开发

码讲——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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: