集合:
Java中的集合就像一个容器,专门用来存储Java对象(实际上是对象的引用,但习惯称为对象),这些对象可以是任意的数据类型,并且长度可变。
集合框架的体系和结构:Collection、Map
Collection:类的对象
子接口:List(序列)、Queue(队列)、Set(集)
List:
- List是元素有序并且可以重复的集合,称为序列;
- List可以精确的控制每个元素的插入位置,或者删除某个位置的元素;
- 两个主要实现类:ArrayList、LinkedList。
ArrayList
- ArrayList的底层是由数组实现的;
- 动态增长,以满足应用程序的需求;
- 在列表尾部插入和删除数据非常有效;
- 更合适查找和更新元素;
- ArrayList的元素可以为null。
Queue的实现类: LinkedList
Set的实现类: HashSet
Map:键值对
- Map中的数据是以键值对(key-value)的形式存储的;
- key-value以Entry的类型对象实例存在;
- 可以通过key值快速找到value;
- 一个映射不能包含重复的键;
- 每个键只能映射到一个值;
- 主要实现类:HashMap
HashMap
- 基于哈希表的Map接口实现;
- 允许使用null键和null值;
- key值不允许重复;
- HashMap的Entry对象是无序的。
code示例:
//创建
Map<String,String> animal = new HashMap<String,String>();
//添加元素
animal.put("key","value");
//输出HashMap里面的值
//1.使用迭代器
Iterator<String> it = animal.values().iterator();
while(it.hasNext) {
System.out.println(it.next());
}
//2.使用entrySet
Set<Entry<String,String>> entrySet = animal.entrySet();
for(Entry<String,String> entry: entrySet) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
//通过key查找value;keySet的使用
String strSearch = "key";
Set<String> keySet = animal.keySet();
for(String key:keySet) {
if(strSearch.equals(key)) {
animal.get(key);
}
}
//判断key是否重复
String strSearch = "key";
if(animal.containsKey(strSearch)) {
System.out.println("key重复,不可用");
} else {
System.out.println("key不重复,可用");
}
集合排序
Sort:方法根据指定的顺序对动态数组中的元素进行排序
//整型数组
List<Integer> list = new ArrayList<Integer>();
list.add(3);
list.add(5);
list.add(9);
//排序:升序
Collections.sort(list);
//字符串数组
List<String> list = new ArrayList<String>();
list.add("red");
list.add("blue");
list.add("green");
//排序:ASCII码排序
Collections.sort(list);
Comparator接口:强行对某个对象进行整体排序的比较函数
//NameComparator
public class NameComparator implements Comparator<Dog> {
@Override
public int compare(Dog d1, Dog d2) {
//按名字升序排序
String name1 = d1.getName();
String name2 = d2.getName();
//如果name1<name2,返回负整数
//如果name1==name2,返回0
//如果name1>name2,返回正整数
return name1.compareTo(name2);
}
}
//DogTest
public class DogTest {
public static void main(String[] args) {
Collections.sort(dogList, new NameComparator());
}
}
ComparaBle:强行对实现它的每个类的对象进行整体排序
//Goods
public class Goods implements ComparaBle<Goods> {
//定义属性和get,set方法和构造方法
...
@Override
public int compareTo(Goods o) {
//按价格降序排序
double price1 = this.getPrice();
double price2 = o.getPrice();
//如果price1<price2,返回负整数
//如果price1==price2,返回0
//如果price1>price2,返回正整数
return new Double(price2 - price1).intValue();
}
}
//GoodsTest
public class GoodsTest {
public static void main(String[] args) {
...GoodsList
Collections.sort(GoodsList);
}
}