
-
集合主要是两组(单列集合,双列集合)
-
Collection接口有两个重要子接口 List 和 Set 实现子类都是单列集合
-
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; jArrayListbook2.getPrice()){ list.set(j,book2);//用set 交换 list.set(j+1,book1); } } } } }
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);
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)