首页 > 代码库 > Java复习第三天---集合框架的相关知识

Java复习第三天---集合框架的相关知识

集合框架总览:

Collection 接口常用方法
//1.add()向集合中添加数据
c.add(apple01);
c.add(apple02);
c.add(apple03);
c.add(apple04);
c.add(apple05);
//2.isEmepty()检测当前集合是否为空
boolean empty = c.isEmpty();
System.out.println("is empty:"+empty);
//3.size()返回当前集合的长度
int size = c.size();
System.out.println("size:"+size);
//4.contains()检测当前集合是否包含某个指定的对象,判断的标准与具体的集合实现类有关,
//一般来说取决于集合元素的hashCode()方法和equals()方法
boolean contains = c.contains(apple03);
System.out.println("contains:"+contains);
//5.remove()删除指定元素
c.remove(apple04);
System.out.println("size:"+c.size());
//6.toArray()将当前集合转为一个Object类型的数组
Object[] array = c.toArray();
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}
集合遍历方式之iterator
//1.获取Iterator迭代器
Iterator iterator = c.iterator();
//2.循环检查是否还存在“下一个”元素,使用iterator.hasNext()
//遍历开始之前,游标指向的是第一个元素“之前”的位置
//当游标指向最后一个元素时,iterator.hasNext()返回false,退出循环
while(iterator.hasNext()){
//3.在循环体中使用next()方法获取当前游标指向的元素
Object next = iterator.next();
System.out.println(next);
}
集合遍历方式之增强for循环
/*
 增强for循环的格式
 for(元素的类型 用来接收当前元素的变量 : 要遍历的集合){
System.out.println(指向当前元素的变量);
} 
 */
for(Object o : c){
System.out.println("~"+o);
}
Set接口之HashSet
HashSet判断两个元素相等的标准:
  1.hashCode()返回值相等
  2.equals()方法返回true
  要保证equals()方法返回true时,两个对象的hashCode()方法返回值相等
Set接口之LinkedHashSet
Set集合之TreeSet
自然排序:要求元素对象实现Comparable接口
/**
 * 比较当前类的实例对象和传入的参数对象
 * @return 返回整型,根据整型值判断两个对象的前后顺序
 */
@Override
public int compareTo(Object o) {
if(this == o){
return 0;
}
if(o instanceof Apple){
Apple otherApple = (Apple) o;
return appName.compareTo(otherApple.appName);
}
return 0;
}
定制排序:要求将一个Comparator接口的实现对象传入TreeSet构造器中
//TreeSet集合的定制排序:
Comparator comparator = new Comparator() {
//匿名内部类:强行创建接口或抽象类的对象时,系统会要求在创建对象的地方把抽象方法实现
@Override
public int compare(Object o1, Object o2) {
if(o1 == o2){
return 0;
}
if(o1 instanceof Banana && o2 instanceof Banana){
Banana ban01 = (Banana) o1;
Banana ban02 = (Banana) o2;
return ban01.getBanName().compareTo(ban02.getBanName());
}
return 0;
}
};
//定制排序要求将Comparator的实现对象传入TreeSet(comparator)构造器中
Set appSet = new TreeSet(comparator);
List接口
//ListIterator提供了新的方法,可以实现从后向前遍历,使用时要注意当前游标的位置
while (listIterator.hasPrevious()){
Object previous = listIterator.previous();
System.out.println(previous);
}
Arrays.asList()方法
将一组数据转换为List集合
List asList = Arrays.asList(new String[]{"apple","banana","watermelon"});
Iterator iterator = asList.iterator();
while (iterator.hasNext()) {
Object object = (Object) iterator.next();
System.out.println(object);
}
LinkedList
void addFirst(Object obj)
appList.addFirst(apple06);
void addLast(Object obj)
appList.addLast(apple07);
Object getFirst()
appList.getFirst()
Object getLast()
appList.getLast()
Object removeFirst()
appList.removeFirst();
Object removeLast()
appList.removeLast();
Vector
void addElement(Object obj)
Apple apple06 = new Apple("New Apple");
appList.addElement(apple06);添加元素
void insertElementAt(Object obj,int index)
Apple apple07 = new Apple("Insert Apple");
appList.insertElementAt(apple07, 3);在指定位置添加元素
void setElementAt(Object obj,int index)
Apple apple08 = new Apple("Replace Apple~");
appList.setElementAt(apple08, 3);将指定索引值的元素替换为新元素
void removeElement(Object obj)
appList.removeElementAt(3);删除指定位置的元素
appList.removeElement(apple04);删除指定元素,如果有多个则删除第一个
appList.removeAll(Arrays.asList(apple04,apple02));将参数集合中涉及到的全部元素都删除,即使有多个也全部删除
void removeAllElements()
appList.removeAllElements();删除集合中的全部元素




内部类:

package net.csdn.inner;
 
public class Outter {
private String outData = http://www.mamicode.com/"outData";>