Java学习第四十天<集合体系><Collection方法><迭代器遍历><增强for><List接口><ArrayList>

Java学习第四十天<集合体系><Collection方法><迭代器遍历><增强for><List接口><ArrayList>,第1张

集合体系
  1. 集合主要是两组(单列集合,双列集合)

  2. Collection接口有两个重要子接口 List 和 Set 实现子类都是单列集合

  3. Map接口实现子类 双列集合 存放Key-Value

 

 

package chapter17.Collection;
​
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
​
public class Collection01 {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        arrayList.add("jack");//放单列数据,单列集合
        arrayList.add("tom");
​
        HashMap hashMap = new HashMap();
        hashMap.put("No1","北京");//放双列数据,单双列集合
        hashMap.put("No2","上海");
    }
}

Collection方法
package chapter17.Collection;
​
import java.util.ArrayList;
import java.util.List;
​
public class CollectionMethod {
    public static void main(String[] args) {
        List list = new ArrayList();
       list.add("jack");//add 添加单列元素
       list.add(10);
       list.add(true);
        System.out.println(list);//[jack, 10, true]
​
        list.remove(0);//删除第一个元素
        list.remove(true);//删除指定元素
        System.out.println(list);//[10]
        System.out.println(list.contains(10));//找元素是否存在
        System.out.println(list.size());//获取元素个数 1
        System.out.println(list.isEmpty());//是否清空 false
        list.clear();//清空
        System.out.println(list);//[]
        ArrayList list2 = new ArrayList();
        list2.add("红楼梦");
        list2.add("三国演义");
        list.addAll(list2);//添加元素
        System.out.println(list2);//[红楼梦, 三国演义]
        System.out.println(list.containsAll(list2));//查找是否包含 T
        list.add("666");
        list.removeAll(list2);//删除list2
        System.out.println(list);//[666]
    }
}

迭代器遍历
package chapter17.Collection;
​
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
​
public class CollectionIterator {
    public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("三国","罗贯",10.2));
        col.add(new Book("演义","贯中",10.3));
        System.out.println(col);
        Iterator iterator = col.iterator();//得到col.迭代器
        while (iterator.hasNext()){//判断是否下一个还有数据
            Object obj = iterator.next();//返回下一个元素,编译型object 运行类型Book
            System.out.println(obj);
        }
        /*  快捷键 itit回车
              while (iterator.hasNext()) {
            Object next =  iterator.next();
​
        }
         */
​
         //Ctrl+l 显示所快捷键
        iterator=col.iterator();//遍历完以后迭代器指在最后一个,再次遍历需重新迭代
    }
}
class Book{
    private String name;
    private String author;
    private double price;
​
    public Book(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getAuthor() {
        return author;
    }
​
    public void setAuthor(String author) {
        this.author = author;
    }
​
    public double getPrice() {
        return price;
    }
​
    public void setPrice(double price) {
        this.price = price;
    }
​
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

增强for
package chapter17.Collection;
​
import java.util.ArrayList;
import java.util.Collection;
​
public class CollectionFor {
    public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("三国","罗贯",10.2));
        col.add(new Book("演义","贯中",10.3));
​
        for (Object book:col){//增强for 底层仍然是迭代器 (可理解成简化版迭代器)快捷键 I 回车
            System.out.println(book);
        }
        int[] nums={1,8,10,90};
        for (int i:nums) {
            System.out.println(i);
        }
​
    }
}

package chapter17.Collection;
​
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
​
public class CollectionExercise {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(new Dog("xx",3));
        list.add(new Dog("yy",4));
        list.add(new Dog("zz",5));
        for (Object o :list) {
            System.out.println(o);
        }
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {//使用迭代器遍历
            Object next =  iterator.next();
            System.out.println(next);
        }
​
    }
}
class Dog{
    private String name;
    private int age;
​
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
​
    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
List接口
package chapter17.List;
​
import java.util.ArrayList;
import java.util.List;
​
public class List01 {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("jack");
        list.add("tom");
        list.add("mary");
        list.add("hsp");
        System.out.println(list);//List 集合类中元素有序 添加与取出顺序一致
        System.out.println(list.get(3));//索引从0开始
​
​
    }
}

package chapter17.List;
​
import java.util.ArrayList;
import java.util.List;
​
public class ListMethod {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("xx");
        list.add("yy");
        list.add(1,"zz");//插入索引
        System.out.println(list);//[xx, zz, yy]
​
        List list2 = new ArrayList();
        list2.add("qq");
        list2.add("ww");
        list2.add("ee");
        list.addAll(1,list2);
        System.out.println(list);//[xx, qq, ww, ee, zz, yy]
        System.out.println(list.indexOf("yy"));//5
        list.add("xx");
        System.out.println(list.lastIndexOf("xx"));//最后一个索引 6
        list.remove(0);
        System.out.println(list);//[qq, ww, ee, zz, yy, xx]
        list.set(1,"mary");//替换
        System.out.println(list);//[qq, mary, ee, zz, yy, xx]
        System.out.println(list.subList(0,2));//[qq, mary] 子集合
    }
}

package chapter17.List;
​
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
​
public class ListFor {
    public static void main(String[] args) {
       List list = new ArrayList();//运行类型换vector/LinkedList也可以
       list.add("xx");
       list.add("yy");
       list.add("zz");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println(next);
        }
        System.out.println("============");
        for (Object o :list) {
            System.out.println(o);
        }
        System.out.println("============");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
​
    }
}

package chapter17.List;
​
import java.sql.Array;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
​
public class ListExercise {
    public static void main(String[] args) {
        List list = new ArrayList();
        for (int i = 0; i <12 ; i++) {
            list.add("hello"+i);
        }
        System.out.println(list);
        list.add(1,"xx");
        System.out.println(list);//[hello0, xx, hello1, hello2, hello3, hello4, hello5, hello6, hello7, hello8, hello9, hello10, hello11]
        System.out.println(list.get(4));//获取第5个元素
        list.remove(5);
        System.out.println(list);//删除第六个
        list.set(6,"uu");//修改第七个
        System.out.println(list);
​
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println(next);
        }
    }
}

package chapter17.List;
​
import java.util.ArrayList;
import java.util.List;
​
public class ListExercise02 {
    public static void main(String[] args) {
       List list = new ArrayList();
       list.add(new Book("xx","XX",108));
       list.add(new Book("yy","YY",101));
       list.add(new Book("zz","ZZ",102));
       Book.sort(list);
        for (Object o :list) {
            System.out.println(o);
        }
​
​
    }
}
class Book{
    private String name;
    private  String author;
    private int price;
​
    public Book(String name, String author, int price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }
​
    public String getName() {
        return name;
    }
​
    public String getAuthor() {
        return author;
    }
​
    public int getPrice() {
        return price;
    }
​
    @Override
    public String toString() {
        return "名称:" +  name +"\t"+  "作者:" + author+"\t" + "价格:" + price ;
    }
    public static void sort(List list){
        for (int i = 0; i < list.size()-1; i++) {
            for (int j = 0; j  book2.getPrice()){
                    list.set(j,book2);//用set 交换
                    list.set(j+1,book1);
                }
            }
        }
    }
}

ArrayList
package chapter17.List;
​
import java.util.ArrayList;
//ArrayList 由数组实现数据存储 基本等同于Vector 除了ArrayList线程不安全,多线程下不建议用ArrayList(用vector)
public class ArrayListDetail01 {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        arrayList.add(null);//可放空值
        arrayList.add("jack");
        arrayList.add("null");
        System.out.println(arrayList);
    }
}
扩容机制

 

底层原码断点分析
package chapter17.List;
​
import java.util.ArrayList;
​
public class ArrayListSource {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();//无参构造器创ArrayList对象
        for (int i = 1; i <=10 ; i++) {//添加1-10数据
            list.add(i);
        }
        for (int i = 11; i <=15 ; i++) {//添加11-15数据
            list.add(i);
        }
        list.add(100);
        list.add(200);
        list.add(null);
​
        ArrayList list2 = new ArrayList(8);
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/722023.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-26
下一篇2022-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存