Collection—子接口-List接口
List基本概述:
- List接口是Collention接口的子接口
- List集合类中元素有序(添加顺序和取出的顺序一致),且可重复
- 每个元素都有对应的顺序索引,即支持索引
List接口常用方法:
-
- void add(int index, Object ele): 在index位置插入ele元素
- boolean addAll(int index, Collection eles): 从index位置开始将eles中的所有元素添加进来
- Object get(int index) :获取指定index位置的元素
- int indexOf(Object obj) :返回obj在集合中首次出现的位置 ,如果没有就返回-1
- int lastIndexOf(Object obj) :返回obj在当前集合中末次出现的位置 ,如果没有就返回-1
- Object remove(int index) :移除指定index位置的元素,并返回此元素注意:Collection中的remove是删除某个元素,这里是方法的重载而不是方法的重写 ,因为方法名一样,但形参类型不一样,在List中也可以按照对象去删除
- Object set(int index, Object ele) :设置指定index位置的元素为ele
- List subList(int fromIndex, int toIndex) :返回从[fromIndex到toIndex )位置的子集合,本身的list没有变化
List三种遍历方式 (ArrayList,LinkedList,Vector)
// List list = new ArrayList();
// List list = new Vector();
List list = new LinkedList();
list.add("lucy");
list.add(12);
// 遍历器
Iterator iterator =list.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
// 增强for
for (Object o :list) {
System.out.println(o);
}
// p
for (int i = 0; i <list.size(); i++) {
System.out.println(list.get(i));
}
List排序练习-由book的销量 从小到大排序
使用List的实现类添加三本图书,并遍历
1.按照价格排序从低到高(使用冒泡排序)
2.要求使用ArrayList 实现
-
实现:
-
public static void main(String[] args) { List list = new ArrayList(); list.add(new Book("红楼梦", "曹雪芹", 100)); list.add(new Book("水浒传","施耐庵",120)); list.add(new Book("女孩","九把刀",80)); System.out.println("排序前: "); printList(list); System.out.println("排序后: "); sort(list); printList(list); } // 打印输出 public static void printList(List list){ Iterator iterator = list.iterator(); while (iterator.hasNext()) { Object next = iterator.next(); System.out.println(next); } } // 冒泡排序 public static void sort(List list){ int listSize = list.size(); for (int i = 0; i < listSize; i++) { for (int j = 0; j < listSize-1-i; j++) { // 取到book类 Book book1 = (Book) list.get(j); Book book2 = (Book) list.get(j+1); // 比较交换 这里用List接口的set(int index,Object o)方法; if (book1.getOutNum()>book2.getOutNum()){ list.set(j,book2); list.set(j+1,book1); } } } } }
-
Book类:
-
class Book{ private String bookName; private String name; private int outNum; public Book(String bookName, String name, int outNum) { this.bookName = bookName; this.name = name; this.outNum = outNum; } public String getBookName() { return bookName; } public String getName() { return name; } public int getOutNum() { return outNum; } public void setBookName(String bookName) { this.bookName = bookName; } public void setName(String name) { this.name = name; } public void setOutNum(int outNum) { this.outNum = outNum; } @Override public String toString() { return "作者: " +name+"\t\t书名:" +bookName+"\t\t销量:" +outNum; } }