CoreJava基础之集合框架(Collection/List/泛型)

1.概念:

集合:存储对象的容器

框架:别人帮我们写好的一些工具和程序

2.对比数组

数组集合
对象容器对象容器
有下标有下标
长度固定(可扩容)长度不固定
插入、删除麻烦借助方法方便
连续的空间连续的空间

 

3.关系总览

接口特点关系
Collection元素是对象 
List元素有序,可重复Collection子接口
Set 元素无序,不可重复Collection子接口

4.Collection:

(1)接口

(2)常用方法:

①add(Object o)把元素添加到集合中

②clear()清空集合

③Contains(Object o)判断元素是否存在

④remove(Object o)删除对象o

⑤size()返回集合长度

(3)实现类:无

Collection工具类:

(1)作用:

作用于集合,可以对集合中的元素进行排序

常用方法:

方法名作用
public static void sort(List list)将集合中元素按照升序排列整理
public static void reverse(List list)将集合中的元素颠倒位置
public static void shuffle(List list)将集合中的元素随机排列

例子:

package nearly.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class ListToArrayList01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub	
		List list=new ArrayList();
		list.add("zhangsi");
		list.add("9527");
		list.add("4399");
		list.add("4396");
		list.add("uzi");
		list.add("vn");
		//1.升序排列
		Collections.sort(list);
		//2.逆序排列
		Collections.reverse(list);
		//3.随机排列
		Collections.shuffle(list);
	}

}

5.List

(1)Collection子接口

(2)常用方法:

①add(int pos,Object o) 下标插入


import java.util.ArrayList;
import java.util.List;

public class ListToArrayList01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List list=new ArrayList();
		//1.添加对象到list集合
		list.add("255215");
		//2.添加元素到0下标
		list.add(0,"zhaosi");
	}

}

②remove(int pos)下标删除


package nearly.test;

import java.util.ArrayList;
import java.util.List;

public class ListToArrayList01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List list=new ArrayList();
		//3.删除下标元素
		list.remove(0);
	}

}

③set(int pos,Object o)下标替换

package nearly.test;

import java.util.ArrayList;
import java.util.List;

public class ListToArrayList01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List list=new ArrayList();
		//4.替换下标元素
		list.set(0, "9527");
	}

}

④get(int index)获取指定下标元素

package nearly.test;

import java.util.ArrayList;
import java.util.List;

public class ListToArrayList01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List list=new ArrayList();
		//5.获得指定下标元素
		list.get(0);
	}

}

(3)遍历

1.下标遍历

		List list=new ArrayList();
		list.add("zhangsi");
		list.add("9527");
		list.add("4399");
		list.add("4396");
		list.add("uzi");
		list.add("vn");
		//1.下标遍历
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}

2.迭代器遍历

		List list=new ArrayList();
		list.add("zhangsi");
		list.add("9527");
		list.add("4399");
		list.add("4396");
		list.add("uzi");
		list.add("vn");
		//2.迭代器遍历
		Iterator it=list.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}

3.for-each遍历

		List list=new ArrayList();
		list.add("zhangsi");
		list.add("9527");
		list.add("4399");
		list.add("4396");
		list.add("uzi");
		list.add("vn");
		//3.for-each遍历
		for (Object obj : list) {
			System.out.println(obj);
		}

(4)实现类

实现类实现查询增删版本发布线程效率
ArrayList数组实现查询快增删慢JDK1.2线程不安全并发效率高
LinkedList链表实现查询慢增删快   
Vector数组实现  JDK1.0线程安全并发效率低

6.泛型

作用:

限制集合中元素的一致性,提高集合的安全性

例:为集合添加泛型

List<String> list=new ArrayList<String>();

(1)泛型必须是类,不能是基本数据类型

//反面例子:
List<int>     //error!
//正面例子:
List<Integer> //ok!

(2)引用泛型和对象泛型必须一致,不支持多态

//反面例子:
List<Animal> list=new ArrayList<Dog>() //error!
//正面例子:
List<Dog> list=new ArrayList<Dog>() //ok!

(3)既然泛型不支持多态,对象泛型可以省略,由编译器自动推断

List<String> list=new ArrayList<>();

(4)如果没有为集合指定泛型,泛型默认为Object

泛型类:

模板编程:

class Myclass<T>{
    T可以是任何一种类型
    在声明引用及创建对象时赋值
    可以定义多个泛型,用逗号,隔开
}
interface MyIA<E,T>{
    void m1(E e);
}

泛型的通配符:

static void print(List<?> list)
?表示任何泛型

参数可以是泛型为Number或者某个子类

static void print(List<?extends Number> list)

参数可以是Double或者Double的父类

static void print(List<? super Double> list)

泛型方法:

定义位置:

修饰符之后,返回值之前

static<T> void  print(List<T> list){
  T  o=list.get(i);
   System.out.println(o); 
}

方法内部可以使用泛型T

①:

static < T extends Number> void print( List<T>  list)
T为Number或Number的子类

②:

static <T extends Number>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员巨轮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值