Java集合
有序(输出的顺序与添加的顺序一致)、元素可以重复
- ArrayList:查找速度快
- LinkedList:添加删除速度快
public static void main(String[] args) {
//面向接口编程
//接口变量指向实现类的对象
//将实现类的对象赋值给接口类型的变量
List list = new ArrayList();
list.add("aa");
list.add("cc");
list.add("bb");
list.add("aa");
System.out.println(list.size());
for (int i = 0; i o1.compareTo(o2));
System.out.println(list);
list.sort(String::compareTo);
list.forEach(System.out::println);
}
示例4:产生不重复的[10,20)之间的10个随机数
- 实现一:
public static void main(String[] args) {
List data = new ArrayList(); //存储产生的随机数
Random random = new Random();
while (data.size() System.out.print(item + " "));
}
- 实现二:
public static void main(String[] args) throws IOException {//psvm
List data = Arrays.asList(10,11,12,13,14,15,16,17,18,19);
Collections.shuffle(data);//打轮顺序
data.forEach(item->System.out.print(item+"\t"));
}
Set
无序、不能重复
示例:public static void main(String[] args) {
Set set = new HashSet();
set.add("mazi");
set.add("11");
set.add("zhangsan");
set.add("55");
set.add("lisi");
set.add("22");
set.add("wanger");
set.add("zz");
set.add("mazi");
System.out.println(set.size());
for (String s : set) {
System.out.print(s+" ");
}
System.out.println("\n---------------");
Iterator iterator = set.iterator(); //迭代器
while (iterator.hasNext()){
System.out.print(iterator.next()+" ");
}
System.out.println("\n---------------");
set.forEach(item->System.out.print(item+" "));
System.out.println("\n---------------");
set.forEach(System.out::println);
}
Collections
集合工具类
示例1:public static void main(String[] args) {
List list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wanger");
list.add("mazi");
Collections.shuffle(list);//打乱顺序为随机,每次都不一样
System.out.println(list);
Collections.sort(list);//按照字典顺序
System.out.println(list);
Collections.sort(list,String::compareTo);//按照字典顺序
System.out.println(list);
List list2 = new ArrayList();
Collections.addAll(list2,"aa","ee","ff","11","33","aa");
System.out.println(list2);
//二分法查找,要求待查询的集合是有序的,返回值为待查元素在有序列表中的位置
Collections.sort(list2,String::compareTo);
System.out.println(list2);
int i = Collections.binarySearch(list2, "11");
System.out.println(i);
String max = Collections.max(list2);
String min = Collections.min(list2);
System.out.println(max+" "+min);
Collections.reverse(list2);
System.out.println(list2);
Collections.replaceAll(list2,"aa","**");
System.out.println(list2);
}
示例:对公司所有的部门进行排序(对象排序)
- 实体类:
public class Dept implements Comparable{ // 所有参与排序的东西,必须是能够排序的
private Integer deptno;
private String dname;
private String loc;
//......getter/setter方法、默认构造方法、全参构造方法、toString方法
@Override
public int compareTo(Dept o) {
return o.getDname().length()-this.getDname().length();
}
}
- 测试代码一:
public static void main(String[] args) {
List depts = new ArrayList();
depts.add(new Dept(10,"ACCOUNTING","NEWYORK"));
depts.add(new Dept(40,"OPERATIONS","BOSTON"));
depts.add(new Dept(20,"RESEARCH","DALLAS"));
depts.add(new Dept(30,"SALES","CHICAGO"));
Collections.sort(depts); // 此处Dept类必须实现Comparable接口
for (Dept dept : depts) {
System.out.println(dept);
}
}
- 测试代码二
public static void main(String[] args) {
List depts = new ArrayList();
depts.add(new Dept(10,"ACCOUNTING","NEWYORK"));
depts.add(new Dept(40,"OPERATIONS","BOSTON"));
depts.add(new Dept(20,"RESEARCH","DALLAS"));
depts.add(new Dept(30,"SALES","CHICAGO"));
depts.sort((o1,o2)->o1.getDname().compareTo(o2.getDname()));
depts.forEach(System.out::println);
Collections.sort(depts,(o1,o2)->o2.getDname().compareTo(o1.getDname()));
depts.forEach(System.out::println);
}
Map
键值对的集合。 键不能重复,值可以重复。
public static void main(String[] args) {
Map map = new HashMap();
map.put("zhangsan",88);
map.put("lisi",86);
map.put("wanger",92);
map.put("mazi",63);
Set entries = map.entrySet();
for(Map.Entry entry : entries){
System.out.println(entry.getKey() + " : " + entry.getValue());
}
Set keys = map.keySet();
for(String key : keys){
Integer value = map.get(key);
System.out.println(key+" "+value);
}
map.forEach((k,v)->System.out.println(k+" ● "+v));
}
示例二:
public static void main(String[] args) throws IOException {// psvm
Map map = new HashMap();
map.put("181107410027", "zhangsan");
map.put("231412343124", "lisi");
map.put("324554656765", "wanger");
map.put("654789870980", "mazi");
String v1 = map.get("654789870980");
System.out.println(v1);
for(String key : map.keySet()) {
String v = map.get(key);
System.out.println(key +"\t"+v);
}
Collection values = map.values();
for(String item : values) {
System.out.println(item);
}
Set entrySet = map.entrySet();
for(Entry entry: entrySet) {
System.out.println(entry.getKey()+"\t"+entry.getValue());
}
}
排值日表
public static void main(String[] args) throws IOException {// psvm
Map map = new HashMap();
map.put("181107410027", "zhangsan");
map.put("231412343124", "lisi");
map.put("324554656765", "wanger");
map.put("654789870980", "mazi");
Set keySet = map.keySet();//获取所有key的集合
String[] array = keySet.toArray(new String[0]); //将Set转为数组
List list = Arrays.asList(array);//将数组转为List
Collections.shuffle(list);//打乱List的顺序
for(String item: list) {
String value = map.get(item);
System.out.println(value);
}
}