集合以及泛型

LinkedList

//LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高
void addFirst (E e)
将指定元素插入此列表的开头。
void addLast (E e)
将指定元素添加到此列表的结尾 Object element = linkedList.element();。
Iterator descendingIterator ()
返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。
E getFirst ()
返回此列表的第一个元素。
E getLast ()
返回此列表的最后一个元素。
E element ()
获取但不移除此列表的头(第一个元素)。

    E peek ()
    获取但不移除此列表的头(第一个元素)。
    E peekFirst ()
    获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
    E peekLast ()
    获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
    E poll ()
    获取并移除此列表的头(第一个元素)
    E pollFirst ()
    获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
    E pollLast ()
    获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
    //案例演示:
    //需求:请用LinkedList模拟栈数据结构的集合,并测试
    MyStack myStack = new MyStack();
    myStack.add(10);
    myStack.add(20);
    myStack.add(30);
    Object o = myStack.get();
    System.out.println(o);

Vector

 // Vector底层数据结构是数组,查询快,增删慢,他是线程安全,效率低
    //void addElement (E obj)
    //将指定的组件添加到此向量的末尾,将其大小增加 1。

    //E elementAt ( int index)
    //返回指定索引处的组件。
    //
    //Enumeration<E> elements ()
    //返回此向量的组件的枚举。
    //E firstElement ()
    //返回此向量的第一个组件(位于索引 0)处的项)。
    //E lastElement ()
    //返回此向量的最后一个组件。
    //void removeAllElements ()
    //从此向量中移除全部组件,并将其大小设置为零。
    //boolean removeElement (Object obj)
    //从此向量中移除变量的第一个(索引最小的)匹配项。
    //void removeElementAt ( int index)
    //删除指定索引处的组件
    //void setElementAt (E obj,int index)
    //将此向量指定 index 处的组件设置为指定的对象
    Vector vector = new Vector();
    vector.add("abc");
    vector.addElement(123);
    vector.add("abc");
    vector.addElement(123);
    vector.add("abc");
    vector.addElement(123);
    vector.add("abc");
    vector.addElement(123);
    vector.add("abc");
    vector.addElement(123);
    vector.add("abc");
    vector.addElement(123);
    vector.add("abc");
    vector.addElement(123);
    Object o = vector.elementAt(1);
    System.out.println(o);
    //获取一个迭起器,可以变量Vector集合中的元素
    Enumeration elements = vector.elements();//vector特有的迭代器
    //while (elements.hasMoreElements()){
    //    Object o1 = elements.nextElement();
    //    System.out.println(o1);
    //}
    //vector.removeAllElements();
    //System.out.println(vector);

泛型

 A:泛型概述:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。
     参数化类型,把类型当作参数一样的传递。
B:泛型的格式	:	<数据类型>	这里的数据类型只能是引用数据类型

C:泛型好处
(1): 把运行时期的问题提前到了编译期间
(2): 避免了强制类型转换
(3):优化了程序设计,解决了黄色警告线
注意:泛型只在编译期有效 但在运行期就擦除了
集合使用了泛型避免了向下转型。
## 泛型通配符
<? extends Animal > 向下限定
<?super Dog > 向上限定
//JDK1.5 提供的一种循环语法
int[] arr = {10, 20, 30};
//for (int i = 0; i < arr.length; i++) {
新式for循环

    // int a 就是你遍历的容器中的当前元素
    //arr 就是你的容器名字
    for (int ele : arr) {
        System.out.println(ele);
    }
    新式for循环遍历集合的途中,不能添加元素或删除元素,否则会报并发修改异常

可变参数的概述和使用

A:可变参数概述: 定义方法的时候不知道该定义多少个参数
B:格式: 修饰符 返回值类型 方法名(数据类型… 变量名){}
C:注意事项:
a: 这里的变量其实是一个数组
b: 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
int sum = add(1, 2);
int sum1 = add(1, 2, 3);
int sum2 = add(1, 2, 3, 4);
int sum6 = add(1, 2, 3, 4,5);
int sum7 = add(1, 2, 3, 4, 5,6);
System.out.println(sum);
System.out.println(sum1);
System.out.println(sum2);
System.out.println(sum6);
System.out.println(sum7);
}
//可变参数的语法 数据类型 … 参数名 一次可以接收多个参数
//可变参数本质上是个数组
//方法中如果有数个参数,可变参数要写在最后面
private static int add(int b,int … i) {
// System.out.println(i.length);
int sum=0+b;
for (int num : i) {
sum+=num;
}
return sum;
}
//private static int add(int i, int i1, int i2) {
//
// return i + i1 + i2;
//}
//
//private static int add(int i, int i1) {
// return i1 + i;
//}
//
//private static int add(int i, int i1, int i2, int i3) {
// return i + i1 + i2 + i3;
//}

}

Arrays工具类的asList()方法的使用

//asList() 将数组的中的元素,转换成集合
A : List list = Arrays.asList(10,20,30,40,50);
System.out.println(list);
B: List<int[]> ints = Arrays.asList(new int[]{10, 20}, new int[]{10, 20}, new int[]{10, 20000});
int[] ints1 = ints.get(ints.size()-1);
System.out.println(ints1[1]);
C:list.toArray();//将集合转成数组
通过asList()方法转换过来的集合,集合中的元素只能获取,不能增加或删除

集合嵌套之ArrayList嵌套ArrayList

 //Java班
        Student s1 = new Student("张三1");
        Student s2 = new Student("张三2");

        //运维班
        Student s3 = new Student("张三3");
        Student s4 = new Student("张三4");

        //前端班
        Student s5 = new Student("张三5");
        Student s6 = new Student("张三6");
        Student s7 = new Student("张三7");

        ArrayList<Student> javaList = new ArrayList<>();
        javaList.add(s1);
        javaList.add(s2);

        ArrayList<Student> linuxList = new ArrayList<>();
        linuxList.add(s3);
        linuxList.add(s4);

        ArrayList<Student> webList = new ArrayList<>();
        webList.add(s5);
        webList.add(s6);
        webList.add(s7);
        //集合嵌套
        *****ArrayList<ArrayList<Student>> maxList = new ArrayList<>();*****

        maxList.add(javaList);
        maxList.add(linuxList);
        maxList.add(webList);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值