1. Set形式的数组,数组内容重复
  2.  
  3. package com.sicdt.library.core.utils;
  4.  
  5. import java.util.ArrayList;
  6. import java.util.Collection;
  7. import java.util.Iterator;
  8. import java.util.Map;
  9. import java.util.Set;
  10. /**
  11. *
  12. * <br>类 名: ArraySet
  13. * <br>描 述: 自定义Set
  14. * <br>作 者: shizhenwei
  15. * <br>创 建: 2017年5月15日
  16. * <br>版 本: v0.0.2
  17. * <br>
  18. * <br>历 史: (版本) 作者 时间 注释
  19. */
  20. public class ArraySet<E> implements Set<E> {
  21.  
  22. private ArrayList<E> list;
  23.  
  24. public ArraySet() {
  25. list = new ArrayList<>();
  26. }
  27.  
  28. public ArraySet(int initialCapacity){
  29. list = new ArrayList<>(initialCapacity);
  30. }
  31.  
  32. public ArraySet(Collection<? extends E> c) {
  33. list = new ArrayList<>(c);
  34. }
  35.  
  36. @Override
  37. public int size() {
  38. return list.size();
  39. }
  40.  
  41. @Override
  42. public boolean isEmpty() {
  43. return list.isEmpty();
  44. }
  45.  
  46. @Override
  47. public boolean contains(Object o) {
  48. return list.contains(o);
  49. }
  50.  
  51. @Override
  52. public Iterator<E> iterator() {
  53. return list.iterator();
  54. }
  55.  
  56. @Override
  57. public Object[] toArray() {
  58. return list.toArray();
  59. }
  60.  
  61. @Override
  62. public <T> T[] toArray(T[] a) {
  63. return list.toArray(a);
  64. }
  65.  
  66. @Override
  67. public boolean add(E e) {
  68. if(list.contains(e)){
  69. return false;
  70. }
  71. return list.add(e);
  72. }
  73.  
  74. @Override
  75. public boolean remove(Object o) {
  76. return list.remove(o);
  77. }
  78.  
  79. @Override
  80. public boolean containsAll(Collection<?> c) {
  81. return list.containsAll(c);
  82. }
  83.  
  84. @Override
  85. public boolean addAll(Collection<? extends E> c) {
  86. if(c == null || c.isEmpty()) return false;
  87. for(E e: c){
  88. add(e);
  89. }
  90. return true;
  91. }
  92.  
  93. @Override
  94. public boolean retainAll(Collection<?> c) {
  95. return list.retainAll(c);
  96. }
  97.  
  98. @Override
  99. public boolean removeAll(Collection<?> c) {
  100. return list.removeAll(c);
  101. }
  102.  
  103. @Override
  104. public void clear() {
  105. list.clear();
  106. }
  107.  
  108. @Override
  109. public String toString() {
  110. return list == null ? "[]" : list.toString();
  111. }
  112.  
  113. public static void main(String[] args) {
  114. Set<String> set = new ArraySet<>();
  115. set.add("aa");
  116. set.add("cc");
  117. set.add("bb");
  118. set.add("cc");
  119. System.out.println(set);
  120.  
  121. Map<String, String> map = new ArrayMap<>();
  122. map.put("a", "aa");
  123. map.put("b", "bb");
  124. map.put("c", "cc");
  125. map.put("a", "dd");
  126. System.out.println(map);
  127.  
  128. System.out.println(map.keySet());
  129.  
  130. Iterator<String> it = map.keySet().iterator();
  131. while(it.hasNext()){
  132. String key = it.next();
  133. String value = map.get(key);
  134. System.out.println(key + "," + value);
  135. }
  136. }
  137. }

JAVA ArraySet<E> SET形式的有序LIST的更多相关文章

  1. Java方法之定义形式及可变参数

    目录 Java方法之定义形式及可变参数 方法调用 使用static修饰的方法 没有static修饰的方法 方法的定义格式 无参无返 无参有返 有参无返 有参有返 形参个数可变的方法 采用数组形参来定义 ...

  2. Java中List Set Map 是否有序等总结

    1.Collection List Set Map 区别记忆 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文 ...

  3. Java数据结构与算法(1) - ch02有序表(OrderedArray)

    有序表需要掌握的插入方法,删除方法和二分法查找方法. 插入方法: 从前往后找到比要插入的值大的数组项,将该数组项及之后的项均后移一位(从最后一项起依次后移),最后将要插入的值插入当前数组项. 删除方法 ...

  4. java中把指数形式的数字转为正常形式显示

    /** * 当浮点型数据位数超过10位之后,数据变成科学计数法显示.用此方法可以使其正常显示. * @param value * @return Sting */ public static Stri ...

  5. java函数式编程的形式

    java中没有真正的函数变量: 一.所有的函数(拉姆达)表达式,都被解释为functional interface @FunctionalInterface interface GreetingSer ...

  6. Java算法练习——寻找两个有序数组的中位数

    题目链接 题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 $O(log(m + n))$. 你可以假设 nu ...

  7. 【日常笔记】java文件下载返回数据流形式

    @RequestMapping("/downloadFile") @ResponseBody public void download(String uploadPathUrl, ...

  8. java以流的形式输出文件

    原文:http://blog.csdn.net/liutt55/article/details/78126614 public void downProcessFile(HttpServletRequ ...

  9. Java中注释的形式

    单行注释 单行注释 // #双斜杠 快捷键:Ctrl + / 多行注释 多行注释 /* */ #单斜杠星号 星号单斜杠 快捷键:Ctrl + shift + / 文档注释 多行注释 /** */ #单 ...

随机推荐

  1. SpringMVC学习(一)小demo

    首先看一下整个demo的项目结构: 第一步是导入Spring MVC单独使用时的最少jar包: 第二步在项目的web.xml中配置Spring MVC提供的拦截请求的Servlet: 全类名是:org ...

  2. PhpMyAdmin 配置文件现在需要一个短语密码的解决方法

    新版本的PhpMyAdmin 增强了安全性,需要在配置文件设置一个短语密码.否则进入之后会有“配置文件现在需要一个短语密码.”的红色警叹提示. 解决方法: 1.将 phpMyAdmin/librari ...

  3. C#网络编程系列文章(五)之Socket实现异步UDPserver

    原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 文章系列文件夹 C#网络编程 ...

  4. Redis遍历所有key的两个命令 -- KEYS 和 SCAN

    当我们需要遍历Redis所有key或者指定模式的key时,首先想到的是KEYS命令: KEYS pattern   官网对于KEYS命令有一个提示: KEYS 的速度非常快,例如,Redis在一个有1 ...

  5. EasyUI DataGrid 相同连续列合并

    扩展方法:$.extend($.fn.datagrid.methods, { autoMergeCells: function(jq, fields) { return jq.each(functio ...

  6. HTML5学习笔记简明版(10):废弃的元素和属性

    废弃的元素(Element) 这个小节里列出的元素在HTML5里将不再使用.现有文档升级到 HTML5的话能够使用一些替代方案. 比如parser section 能够处理isindex 元素的功能. ...

  7. ng-model ng-show

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. poj1840

    Eqs Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 15133   Accepted: 7426 Description ...

  9. 【BZOJ2226】[Spoj 5971] LCMSum 莫比乌斯反演(欧拉函数?)

    [BZOJ2226][Spoj 5971] LCMSum Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n ...

  10. 《从零开始学Swift》学习笔记(Day 20)——函数中参数的传递引用

    原创文章,欢迎转载.转载请注明:关东升的博客 参数的传递引用 类是引用类型,其他的数据类型如整型.浮点型.布尔型.字符.字符串.元组.集合.枚举和结构体全部是值类型. 有的时候就是要将一个值类型参数以 ...