1、Collection 接口的实现子类的常见方法和两种遍历方式
package Collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionIterator {
public static void main(String[] args) {
Collection list = new ArrayList();
list.add(new Book("三国","罗",10.2));
list.add(new Book("西游","好",11.2));
list.add(new Book("三","王",12.2));
Iterator iterator = list.iterator();
while(iterator.hasNext()){//判断集合内是否还有数据
Object obj = iterator.next();//返回的是Object类型
System.out.println(obj);
//快捷键itit。
}
//当退出while收iterator,就指向最后的元素,要想重新遍历值的话,就需要重置 我们的迭代器
System.out.println("重新遍历");
iterator = list.iterator();//再次指向最前面
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
//增强for循环。
for (Object o :list) {
System.out.println(o);
}//也可以用在数组上,增强for的底层依然是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;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", 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;
}
}
2、
package Collection;
import java.util.ArrayList;
import java.util.List;
public class List_ {
public static void main(String[] args) {
//list集合类中元素有序(添加顺序和去除顺序一样,而且可以重复)
List list = new ArrayList();
list.add("jack");
list.add("xsm");
list.add("wgs");
list.add("tom");
// void add(int index, Object ele):在 index 位置插入元素
// boolean addAll(int index, Collection eles):从 index 位置开始将 eles 中的所有元素添加进来
System.out.println( list.indexOf("tom"));
System.out.println("list = " + list);
System.out.println(list.lastIndexOf("tom"));
//既然顺序都一样了,那么我们就可以知道其有对应的索引的。
System.out.println(list.get(2));
list.remove("jack");
list.set(1,"xgs");//就是将索引为1的位置替换成xgs,要是给一个不存在的index的话就会产生异常。
// List subList(int fromIndex, int toIndex):返回从 fromIndex 到 toIndex 位置的子集合
List list1 = list.subList(0, 2);//放回的值是:左闭右开的值
//list的实现子类很多个,我们只需要知道是ArrayList、linkedList、Vector
//常见的方法:
}
}
3、
package Collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Exercise {
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);
list.add(1,"hsp");
list.get(4);//获取第五个元素
list.remove(5);//第六个元素,索引为5.
list.set(6,"三国");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
}
}
总结:list的实现子类也可以用这些上述遍历方法。
对list中对象的某些值进行排序,向下转型
package Collection;
import Gather.list;
import java.util.ArrayList;
public class E1 {
public static void main(String[] args) {
@SuppressWarnings({"all"})
ArrayList list = new ArrayList();
list.add(new Book("三国","罗",12.5));
list.add(new Book("西游","罗",1.5));
list.add(new Book("水浒","罗",2.5));
bubble(list);
for (Object o :list) {
System.out.println(o);
}
}
public static void bubble(ArrayList list){
//冒泡排序
//list.size(),把他单独成一个变量
//listsize = list.size().
for (int i = 0;i < list.size() - 1;i++){
for(int j = 0;j < list.size() - 1 - i;j++){
Book book1 = (Book)list.get(j);
Book book2 = (Book)list.get(j + 1);
if (book1.getPrice() > book2.getPrice()){
list.set(j,book2);
//集合的交换是set
list.set(j + 1,book1);
}
}
}
}
}
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;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", 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;
}
}
注意事项:
- ArrayList是可以放null的。还可以放多个null。
- 底层是用数组实现的。
- ArrayList是线程不安全的(没有synchronized),所以说他的效率比较高。
- 在多线程的情况下,不适用。

Arrays.copyOf(arr,length);我把他看成是拉长的操作。//保护原来的数据。

466

被折叠的 条评论
为什么被折叠?



