NO | 区别点 | ArrayList | Vector |
1 | 推出时间 | JDK1.2,属于新增类 | JDK1.0,属于旧类 |
2 | 性能 | 异步处理 |
同步处理
方法采用synchronized修饰,为同步方法
|
3 | 安全 | 非线程安全 | 线程安全 |
4 | 数据输出方式 | Iterator、ListIterator、foreach |
Iterator、ListIterator、foreach、
Enumeration
|
public class Test { public static void main(String[] args) { List<String> vertor = new Vector<String>(); vertor.add("A"); vertor.add("B"); vertor.add("C"); //输出数据:使用迭代器Iterator Iterator<String> iterator = vertor.iterator(); while (iterator.hasNext()){ String data = iterator.next(); System.out.println(data); } System.out.println("*******"); //输出数据:使用Enumeration Enumeration<String> enumeration = ((Vector<String>) vertor).elements(); while (enumeration.hasMoreElements()){ String data = enumeration.nextElement(); System.out.println(data); } } }
//程序运行结果: A B C ******* A B C
/** * 按照规范重写Book类的equals()方法、hashCode()方法 */ class Book { private int price; private String name; public Book(int price, String name) { this.price = price; this.name = name; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Book book = (Book) o; return price == book.price && Objects.equals(name, book.name); } @Override public int hashCode() { return Objects.hash(price, name); } @Override public String toString() { return this.name + "--" + this.price; } } public class Test { public static void main(String[] args) { Book book = new Book(100, "java开发"); Book book1 = new Book(100, "java开发"); Book book2 = new Book(100, "设计模式"); Book book3 = new Book(10, "abc"); System.out.println("*********"); System.out.println(book.hashCode()); //-1166307760 System.out.println(book1.hashCode()); //-1166307760 System.out.println(book2.hashCode()); //1100964814 System.out.println(book.equals(book1)); //true System.out.println(book.equals(book2)); //false System.out.println("*********"); Set<Book> hashSet = new HashSet<>(); hashSet.add(book); hashSet.add(book1); //book1 与 book 重复,不进行保存 hashSet.add(book2); //book2 不重复 hashSet.add(book3); //book3 不重复 System.out.println(hashSet); } }
//程序执行结果: ********* -1166307760 -1166307760 1100964814 true false ********* [设计模式--100, abc--10, java开发--100]
(2)数据重复测试二:e1.equals(e2)为true,但hashCode()值不同的情况
class Book { private int price; private String name; public Book(int price, String name) { this.price = price; this.name = name; } @Override public String toString() { return this.name + "--" + this.price; } //任何对象之间比较,均返回true public boolean equals(Object o) { return true; } //使用随机数生成hashCode public int hashCode() { return Objects.hash(Math.random()); } } public class Test { public static void main(String[] args) { Book book = new Book(100, "java开发"); Book book1 = new Book(100, "java开发"); Book book2 = new Book(100, "设计模式"); System.out.println("*********"); System.out.println(book.hashCode()); System.out.println(book1.hashCode()); System.out.println(book2.hashCode()); System.out.println(book.equals(book1)); System.out.println(book.equals(book2)); System.out.println("*********"); Set<Book> hashSet = new HashSet<>(); hashSet.add(book); hashSet.add(book1); //book1 与 book 重复 hashSet.add(book2); //book2 不重复 System.out.println(hashSet); } }
//程序执行结果 ********* 920603493 -1541131927 1273275611 true true ********* [java开发--100, 设计模式--100, java开发--100]
class Book implements Comparable{ private int price; private String name; public Book(int price, String name) { this.price = price; this.name = name; } @Override public String toString() { return this.name + "--" + this.price; } @Override public boolean equals(Object o) { return true; } @Override public int hashCode() { return Objects.hash("1111"); } @Override public int compareTo(Object o) { return 1; } } public class Test { public static void main(String[] args) { Book book = new Book(100, "java开发"); Book book1 = new Book(100, "java开发"); Book book2 = new Book(100, "设计模式"); System.out.println("*********"); Set<Book> hashSet = new TreeSet<>(); hashSet.add(book); hashSet.add(book1); hashSet.add(book2); System.out.println(hashSet); } }
//程序执行结果 ********* [java开发--100, java开发--100, 设计模式--100]
//语法定义
public interface Map<K,V>
NO | 方法名称 |
1 |
将指定的值与此映射中的指定键相关联(可选操作)。
|
2 |
返回此映射中映射到指定键的值。
|
3 |
返回此映射中包含的映射关系的 set 视图。
|
4 |
public Set<K> keySet()
返回此映射中包含的键的 set 视图。
|
NO | 区别点 | HashMap | HashTable |
1 | 推出时间 | JDK1.2,属于新增类 | JDK1.0,属于旧类 |
2 | 性能 | 异步处理 |
同步处理
方法采用synchronized修饰
|
3 | 安全 | 非线程安全 | 线程安全 |
4 | 是否允许null | 允许key或value为null | key和value均不能为null |
class Book { private int price; private String name; public Book(int price, String name) { this.price = price; this.name = name; } @Override public String toString() { return this.name + "--" + this.price; } } public class Test { public static void main(String[] args) { Book book = new Book(100, "java开发"); Book book1 = new Book(100, "java开发"); Book book2 = new Book(56, "设计模式"); System.out.println("*********"); Map<String,Book> map = new HashMap<>(); map.put("book",book); map.put("book1",book1); map.put("book2",book2); //将Map中的数据,通过迭代器输出:Map —> Set —> Iterator Set<Map.Entry<String,Book>> set = map.entrySet(); Iterator<Map.Entry<String,Book>> iterator = set.iterator(); while (iterator.hasNext()){ Map.Entry<String,Book> entry = iterator.next(); String key = entry.getKey(); Book value = entry.getValue(); System.out.println(key+" : "+value); } } }
//程序执行结果 ********* book2 : 设计模式—56 book1 : java开发--100 book : java开发--100
jav核心(十四):集合类型操作:Collection、List、Set;Map集合;Iterator迭代器
原文:https://www.cnblogs.com/newbie27/p/10566886.html