售票网站建设,帮助做问卷调查的网站,邢台公司网站建设,网站 手机案例DAY7.2 Java核心基础
想学习Collection、list、ArrayList、Set、HashSet部分的小伙伴可以转到 7.1集合框架、Collection、list、ArrayList、Set、HashSet和LinkedHashSet、判断两个对象是否相等文章查看
set集合
在set集合中#xff0c;处理LinkedHashSet是有序的#xf…DAY7.2 Java核心基础
想学习Collection、list、ArrayList、Set、HashSet部分的小伙伴可以转到 7.1集合框架、Collection、list、ArrayList、Set、HashSet和LinkedHashSet、判断两个对象是否相等文章查看
set集合
在set集合中处理LinkedHashSet是有序的TreeSet的存放也是有序的但是二者之间的有序亦有区 LinkedHashSet元素的存储顺序和遍历顺序是一致的 TreeSet内部元素会按照升序的方法进行排序无论存入元素的顺序是什么都会按照升序进行输出 public static void main(String[] args) {TreeSetInteger treeSet new TreeSet();treeSet.add(1);treeSet.add(5);treeSet.add(3);treeSet.add(2);treeSet.add(1);treeSet.add(9);IteratorInteger iterator treeSet.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}System.out.println(***********************);LinkedHashSetInteger linkedHashSet new LinkedHashSet();linkedHashSet.add(98);linkedHashSet.add(2);linkedHashSet.add(3);linkedHashSet.add(2);linkedHashSet.add(11);linkedHashSet.add(1);for (Integer integer : linkedHashSet) {System.out.println(integer);}
}可以看见treeSet自动排序了而linkedHashSet按照添加顺序输出的但是他们两个都去除了重复元素验证了Set集合元素的唯一性
TreeSet 内部会自动按照升序对元素进行排列所以添加到 TreeSet 集合中的元素必须具备排序的功能无法排序的对象无法添加到 TreeSet 中的。
如果传递的是一个不能比较的对象
public class test {public static void main(String[] args) {TreeSet treeSet new TreeSet();treeSet.add(new A(6));treeSet.add(new A(2));treeSet.add(new A(3));treeSet.add(new A(4));}
}
class A{private int num;public A(int num) {this.num num;}
}就会出现异常显示无法是实现比较的接口
Comparable 是排序接口实习了该接口的类就具备了排序的功能对象就可以进行排序
如果要比较我们就需要在A对象类里面实现Comparable 接口
class A implements Comparable{private int num;public A(int num) {this.num num;}/*** A.compareTo(B)* 返回值* 1表示A大于B* 0表示A等于B* -1表示A小于B* param o* return*/Overridepublic int compareTo(Object o) {if (o instanceof A){A a (A) o;return this.num - a.num;}return 0;}Overridepublic String toString() {return A{ num num };}
}public class test {public static void main(String[] args) {TreeSet treeSet new TreeSet();treeSet.add(new A(6));treeSet.add(new A(2));treeSet.add(new A(3));treeSet.add(new A(4));Iterator iterator treeSet.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}}
}这时候输出 完美解决
Map 接口
Set List 都是Collenction的子接口Map接口是与Collenction完全独立的一个体系
Set 、List、Collenction都是只能操作一个元素而Map可以操作一对数据以Key-Value形式存在
Map接口常见方法
方法描述int size()获取集合长度boolean isEmpty()判断集合是否为空boolean containsKey(Object key)判断集合中是否存在某个 key 值boolean containsValue(Object key)判断集合中是否存在某个 value 值V get(Object key)取出集合中 key 对应的 valueV put(K key,V value)向集合中添加一组 key-value 的元素V remove(Object key)删除集合中 key 对应的 valuevoid clear()清除集合中的所有元素Set keySet()取出集合中所有的 key返回一个 Set 集合Collection values()取出集合中所有的 value返回一个 Collection 集合Set entrySet()将 Map 对象转为 Set 对象int hashCode()获取集合的散列值boolean equals(Object o)比较两个集合是否相等
Map是一个接口无法被实例化创建对象而需要通过实现类来创建对象 HashMap存储无序key不能重复值可以重复 TreeMap存储有序key不能重复值可以重复 测试方法
public class test {public static void main(String[] args) {testMapMethods();}public static void testMapMethods() {MapString, Integer map new HashMap();// 测试 put 方法map.put(a, 1);map.put(b, 2);map.put(c, 3);System.out.println(插入元素后: map);// 测试 size 方法System.out.println(集合大小: map.size());// 测试 isEmpty 方法System.out.println(集合是否为空: map.isEmpty());// 测试 containsKey 方法System.out.println(是否包含键 a: map.containsKey(a));System.out.println(是否包含键 d: map.containsKey(d));// 测试 containsValue 方法System.out.println(是否包含值 1: map.containsValue(1));System.out.println(是否包含值 4: map.containsValue(4));// 测试 get 方法System.out.println(键 a 对应的值: map.get(a));System.out.println(键 d 对应的值: map.get(d));// 测试 keySet 方法SetString keySet map.keySet();System.out.println(所有键的集合: keySet);// 测试 values 方法System.out.println(所有值的集合: map.values());// 测试 hashCode 方法System.out.println(集合的哈希码: map.hashCode());// 测试 remove 方法System.out.println(删除键 a 对应的值: map.remove(a));System.out.println(删除后: map);// 测试 replace 方法System.out.println(将键 b 的值替换为 4: map.replace(b, 4));System.out.println(替换后: map);// 测试 clear 方法map.clear();System.out.println(清空后: map);System.out.println(清空后是否为空: map.isEmpty());}
}输出 朋友们可以自己取尝试调用一下这些方法
TreeMap和HashMap差不多但是这个会根据key排序
public static void main(String[] args) {TreeMapInteger, String map new TreeMap();map.put(3, Three);map.put(1, One);map.put(2, Two);map.put(2, Two);System.out.println(map);
}测试 Collections 工具类
集合除了可以存储数据之外还提供了很多方法来对数据进行操作但是这些方法都有其局限性实际操作起来不是很方便JDK 提供了一个工具类 Collections专门用来操作集合添加元素、元素排序、替换元素。
Collections 常用方法
方法描述sort根据集合泛型对应的类实现的 Comparable 接口对集合进行排序sort根据 Comparator 接口对集合进行排序binarySearch查找元素在集合中的下标要求集合元素必须是升序排列get根据下标找到集合中的元素reverse对集合元素的顺序进行反转swap交换集合中指定位置的两个元素fill将集合中的所有元素进行替换min返回集合中最小的元素max返回集合中最大的元素replaceAll将集合中的所有元素进行替换addAll向集合中添加元素
部分代码示例 sort方法 // 定义一个实现了Comparable接口的类
class Person implements ComparablePerson {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}Overridepublic int compareTo(Person p) {return Integer.compare(this.age, p.age);}Overridepublic String toString() {return Person{name name , age age };}
}public class TestSort {public static void main(String[] args) {ListPerson list new ArrayList();list.add(new Person(Alice, 25));list.add(new Person(Bob, 30));list.add(new Person(Charlie, 20));Collections.sort(list); // 根据age排序System.out.println(list);}
}输出 实现compareTo方法然后可以使得按照age排序 binarySearch (查找元素下标要求集合升序排列) public static void main(String[] args) {ListInteger list Arrays.asList(1, 3, 5, 7, 9);int index Collections.binarySearch(list, 5); // 返回元素5的索引System.out.println(Index of 5: index);
}输出 get (根据下标找到集合中的元素) public static void main(String[] args) {ListString list Arrays.asList(apple, orange, banana);String element list.get(1); // 获取第二个元素System.out.println(Element at index 1: element);
}reverse (反转集合顺序) public static void main(String[] args) {ListString list Arrays.asList(apple, orange, banana);Collections.reverse(list);System.out.println(Reversed list: list);
}swap (交换指定位置的两个元素) public static void main(String[] args) {ListString list Arrays.asList(apple, orange, banana);Collections.swap(list, 0, 2); // 交换第一个和第三个元素System.out.println(Swapped list: list);
}fill (将集合中的所有元素替换为指定值) public static void main(String[] args) {ListString list new ArrayList(Arrays.asList(apple, orange, banana));Collections.fill(list, fruit);System.out.println(Filled list: list);
}min (返回集合中最小的元素)、max (返回集合中最大的元素) public static void main(String[] args) {ListInteger list Arrays.asList(5, 3, 8, 1, 9);Integer max Collections.max(list);Integer min Collections.min(list);System.out.println(Maximum value: max);System.out.println(Minimum value: min);
}replaceAll (将集合中的所有元素替换为指定值) public static void main(String[] args) {ListString list Arrays.asList(apple, orange, banana);Collections.replaceAll(list, apple, fruit);System.out.println(Replaced list: list);
}addAll (向集合中添加所有指定元素) public static void main(String[] args) {ListString list new ArrayList();ListString toAdd Arrays.asList(apple, orange, banana);Collections.addAll(list, grape, peach);// 或者使用addAll方法list.addAll(toAdd);System.out.println(Added list: list);
} 文章转载自: http://www.morning.rgpy.cn.gov.cn.rgpy.cn http://www.morning.weiwt.com.gov.cn.weiwt.com http://www.morning.lczxm.cn.gov.cn.lczxm.cn http://www.morning.mltsc.cn.gov.cn.mltsc.cn http://www.morning.wjhpg.cn.gov.cn.wjhpg.cn http://www.morning.bpwz.cn.gov.cn.bpwz.cn http://www.morning.qrhh.cn.gov.cn.qrhh.cn http://www.morning.qftzk.cn.gov.cn.qftzk.cn http://www.morning.gsrh.cn.gov.cn.gsrh.cn http://www.morning.pjzcp.cn.gov.cn.pjzcp.cn http://www.morning.lkthj.cn.gov.cn.lkthj.cn http://www.morning.5-73.com.gov.cn.5-73.com http://www.morning.txmlg.cn.gov.cn.txmlg.cn http://www.morning.pfgln.cn.gov.cn.pfgln.cn http://www.morning.yppln.cn.gov.cn.yppln.cn http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.qnzld.cn.gov.cn.qnzld.cn http://www.morning.cxnyg.cn.gov.cn.cxnyg.cn http://www.morning.krkwh.cn.gov.cn.krkwh.cn http://www.morning.wwwghs.com.gov.cn.wwwghs.com http://www.morning.bnlch.cn.gov.cn.bnlch.cn http://www.morning.bzfld.cn.gov.cn.bzfld.cn http://www.morning.nggbf.cn.gov.cn.nggbf.cn http://www.morning.wwwghs.com.gov.cn.wwwghs.com http://www.morning.pqwhk.cn.gov.cn.pqwhk.cn http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn http://www.morning.kscwt.cn.gov.cn.kscwt.cn http://www.morning.shsh1688.com.gov.cn.shsh1688.com http://www.morning.knmp.cn.gov.cn.knmp.cn http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn http://www.morning.wjtwn.cn.gov.cn.wjtwn.cn http://www.morning.msbpb.cn.gov.cn.msbpb.cn http://www.morning.hkpyp.cn.gov.cn.hkpyp.cn http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn http://www.morning.yrsg.cn.gov.cn.yrsg.cn http://www.morning.dbtdy.cn.gov.cn.dbtdy.cn http://www.morning.bdfph.cn.gov.cn.bdfph.cn http://www.morning.ktyww.cn.gov.cn.ktyww.cn http://www.morning.qdmdp.cn.gov.cn.qdmdp.cn http://www.morning.yggdq.cn.gov.cn.yggdq.cn http://www.morning.psxcr.cn.gov.cn.psxcr.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.ftsmg.com.gov.cn.ftsmg.com http://www.morning.tdnbw.cn.gov.cn.tdnbw.cn http://www.morning.prplf.cn.gov.cn.prplf.cn http://www.morning.wprxm.cn.gov.cn.wprxm.cn http://www.morning.htpjl.cn.gov.cn.htpjl.cn http://www.morning.gbsfs.com.gov.cn.gbsfs.com http://www.morning.cykqg.cn.gov.cn.cykqg.cn http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.mlycx.cn.gov.cn.mlycx.cn http://www.morning.tntbs.cn.gov.cn.tntbs.cn http://www.morning.bpmdh.cn.gov.cn.bpmdh.cn http://www.morning.jwpcj.cn.gov.cn.jwpcj.cn http://www.morning.lanyee.com.cn.gov.cn.lanyee.com.cn http://www.morning.wyjpt.cn.gov.cn.wyjpt.cn http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn http://www.morning.mbzlg.cn.gov.cn.mbzlg.cn http://www.morning.yzktr.cn.gov.cn.yzktr.cn http://www.morning.ldhbs.cn.gov.cn.ldhbs.cn http://www.morning.trrpb.cn.gov.cn.trrpb.cn http://www.morning.ybmp.cn.gov.cn.ybmp.cn http://www.morning.qglqb.cn.gov.cn.qglqb.cn http://www.morning.mpmtz.cn.gov.cn.mpmtz.cn http://www.morning.nhdw.cn.gov.cn.nhdw.cn http://www.morning.thwhn.cn.gov.cn.thwhn.cn http://www.morning.rsdm.cn.gov.cn.rsdm.cn http://www.morning.fhsgw.cn.gov.cn.fhsgw.cn http://www.morning.thwhn.cn.gov.cn.thwhn.cn http://www.morning.qyqdz.cn.gov.cn.qyqdz.cn http://www.morning.kpbq.cn.gov.cn.kpbq.cn http://www.morning.trsdm.cn.gov.cn.trsdm.cn http://www.morning.flqkp.cn.gov.cn.flqkp.cn http://www.morning.ndcf.cn.gov.cn.ndcf.cn http://www.morning.sbwr.cn.gov.cn.sbwr.cn http://www.morning.jczjf.cn.gov.cn.jczjf.cn http://www.morning.rntby.cn.gov.cn.rntby.cn http://www.morning.yzxlkj.com.gov.cn.yzxlkj.com http://www.morning.gcftl.cn.gov.cn.gcftl.cn