JAVA笔记11 list集合的学习

1.list集合中方法的介绍
//集合:作为一种容器,比数组灵活
//数组和集合的区别
//数组的长度是固定的,集合的长度是可变的
//数组既能存储基本数据类型,又能存储引用数据类型,集合只能存储引用数据类型
//数组存储同一种数据类型,集合可以存储多种数据类型
//Collection list set
//List------>Arraylist vector LinkedList
//List 元素有序(存取元素顺序一致),允许重复元素
  List list = new Arraylist();
  list.add("li");
  list.add("wang");
  list.add("zhang");
  list.remove(0); //特有方法,根据索引移除元素
  object o = list.get(1);
  object o1 = list.set(1,"liu");
  
  System.out.println(list);

   List list = new Arraylist();
   list.add(1);
   list.add(2);
   list.add(300);
   list.remove(1);
   list.remove(Integer.valueof(300)); //区分不出来,索引和元素,手动包装一下,就可区分出来
 List list = new Arraylist();
  list.add("li");
  list.add("wang");
  list.add("zhang");
  for(int i = 0;i<list.size();i++){
        object q = list.get(i);
      System.out.println(list);

  }
 List list = new Arraylist();
  list.add("li");
  list.add("wang");
  list.add("zhang");
 ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()){
            Object obj = listIterator.next();
            String str= (String) obj;
            if(str.equals("world")){
                list.remove("Java");
                list.add("JavaEE");//当我们使用迭代器,遍历集合元素时,我们的迭代器事先已经知晓,集合中的元素个数,你突然在迭代途中,想要增加或删除,一个元素,那么就会打乱,原来集合中的元素的顺序,那么迭代器也就无所适从了。就会抛出一个并发修改异常。
        //解决方式1:我们使用迭代器进行遍历,迭代途中如果要添加元素和删除元素,可以使用迭代器的添加删除元素的方法
                //listIterator.add("JavaEE");
                //listIterator.remove();
               
2.数据结构和算法
//数据结构和算法
        //数据结构:一种数据存储的方式。
        //常见的数据结构:栈,队列,数组,链表,树,哈希表
        //数据结构的特点
        //栈:先进后出,后进的先出。弹夹
        //队列:先进的先出,后进的后出  出地铁站
        //数组:查询快(有索引) 增删慢
        //链表:
3.Arraylist,vector与LinkedList
public class MyTest2 {
    public static void main(String[] args) {
        //List:数组元素有序,允许元素重复
        //List
        // ArrayList 底层数据结构是 数组,查询快,增删慢。线程不安全,效率高
        //Vector: 底层数据结构是 数组,查询快,增删慢,线程安全,效率低
        //  LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全效率高
        //我选哪种容器,看需要选择
    }
}
Arraylist
ArrayList list = new ArrayList();
        list.add(100);
        list.add(200);
        list.add(300);
        list.add(30);
        list.add(10);
        list.add(109);
        list.add(30);
        int i = list.indexOf(30);
        System.out.println(i);
        int i1 = list.lastIndexOf(30);
        System.out.println(i1);
         
         List list1 = list.subList(0,2);//根据起始索引与终值索引截取到新的集合中
         0bject clone = list.clone();//克隆一个集合
        //排序集合中的元素
        //Comparator 比较器
        list.sort(new Comparator() {
            @Override
            public int compare(Object a, Object b) {
                Integer aa= (Integer) a;
                Integer bb= (Integer) b;
                return bb-aa;
            }
        });
        System.out.println(list);

    }
}


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)
        //删除指定索引处的组件。
LinkedList
public class MyList {
    LinkedList linkedList=null;
    public MyList() {
       linkedList = new LinkedList();
    }

    //添加元素
    public void addEle(String ele) {
       // ccc bbb   aaa
        linkedList.addFirst(ele);

    }

    public Object getEle() {
        Object pop = linkedList.pop();
        //你把取的元素再加回去
        linkedList.addLast(pop);

        return pop;
    }
}
4.泛型
public class MyTest {
    public static void main(String[] args) {
        //泛型机制:JDK1.5之后引入的一个概念
        //把类型明确工作,推迟到创建对象,或调用方法时,才去明确的一种机制。
        //泛型的语法:<数据类型,数据类型>
        //泛型可以加在 接口上,类型,方法上
        //泛型的好处:1.避免了向下转型,2.将问题提前到了编译期
        //泛型的特点:泛型只在编译期有效,在运行期就擦除了。

        //泛型可以限定,我这个集合中存储什么样的引用数据类型
5.新式for循环
//新式for循环遍历数组
        //1,明确容器中的元素是什么数据类型
        //2.容器的名字
       // for(容器中的元素的数据类型 当前遍历的元素名 : 容器名)
6 补充
public class MyTest {
    public static void main(String args) {
        int[] arr = {20, 40, 50, 60};
        //System.out.println(arr);
        //System.out.println(Arrays.toString(arr));
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1004);
        list.add(1000);
        list.add(1002);
        list.add(10026);
        list.add(10077);
        list.add(10089);
        list.add(10000);
        list.add(100444);
        //把集合转成数组
        //创建一个数组,遍历集合取出元素放到数组里面
        //Integer[] arrins=new Integer[list.size()];
       // Object[] objects = list.toArray();
        int[] arr2 = {20, 40, 50, 60};
        //把数组转换成集合
        List<int[]> ints = Arrays.asList(arr2);
        int[] ints1 = ints.get(0);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值