黑马程序员_JAVA集合类函数总结

------- android培训java培训、期待与您交流! ----------


collection

      ---List:元素有序,可重复,有索引
          ---ArrayList:底层的数据结构是数组结构               查询快,增删稍慢
          ---LinkedList:底层是链表结构                              增删快,查询稍慢
          ---Vector:底层数组结构,线程同步,被淘汰         慢
     ---Set:元素无序,不可重复
          ---HashSet底层结构是哈希表
          ---TreeSet

ArrayList   a1 = new ArrayList()

a1.add();添加元素 a1.size();集合大小 a1.remove();移除元素 a1.clear();清空集合
a1.isEmpty();是否为空 a1.contains();是否存在某元素 a1.retainAll(a2);取交集 a1.removeAll(a2);删除多个元素

list特有方法(带角标):
a1.add(1,"java98");特定角标处添加元素 a1.remove(2);移除特定角标元素 a1.set(2,"java89");更改特定角标元素
a1.get(1);获取角标元素 a1.subList();

用角标遍历集合可以获取所有元素, 用迭代器也可以获取所有元素。

迭代器

Iterator it = a1.iterator();

for( it.hasNext())-------并发修改安全隐患
{
      sop(it.next());
}

列表迭代器

List集合特有迭代器,是Iterator的子接口
ListIterator li = a1.ListIterator();     可以进行增删改查
while(li.hasNext())--------------li.hasPrevious()
{
      Object obj = li.next();
      if(obj.equals("java23"))
               li.add("java43");
}


Vector v = new Vector();
addElement();
elements();

Enumeration en = v.elements();

while(en.hasMoreElements())
{
      System.out.println(en.nextElement());
}

枚举是vector的特有取出方式, Enumeration和Iterator功能是重复的。


LinkList特有方法:

addFirst(); getFirst(); removeFirst();
addLast(); getLast(); 获取元素,不删除 removeLast(); 获取元素,并删除

集合中没有元素,会抛出异常

JDK1.6中替代方法
offerFirst(); peekFirst(); pollFirst();
offerLast(); peekLast(); 获取元素,不删除 pollLast(); 获取元素,并删除


LinkedList link = new LinkedList();

link.addLast("java01");
link.addLast("java02");
link.addLast("java03");
link.addLast("java04");

link.size()

不用迭代器
while(!link.isEmpty())
{
      sop(link.removeFirst());
}

使用LinkList模拟队列或堆栈数据结构
堆栈:先进后出
队列:先进先出
class Duilie
{
     private LinkedList link;
     Duilie()
     {
          link = new LinkedList();
     }
     
     public void myAdd(Object obj)
     {
            link.addFirst(obj);
     }
     public Object myGet()
     {
          return link.removeLast();
     }
     public boolean isNull()
     {
          return link.isEmpty();
     }
}

class LinkedListTest
{
     public static void main(String[] args)
     {
          Duilie di = new Duilie();
          di.myAdd("java01");
          di.myAdd("java02");
          di.myAdd("java03");
          di.myAdd("java04");

          System.out.println(d1.myGet());
     }
}

HashSet 保证元素唯一性以及判断元素是否存在和删除等操作依赖的都是元素的hashCode和equals方法。

HashSet hs =  new HashSet();

hs.add("java01");//返回值为Boolean型
hs.add("java01");//添加失败,为假,成功为真
hs.add("java02");
hs.add("java03");
hs.add("java04");

Iterator it = hs.iterator();

while(it.hasNext())
{
      sop(it.next());
}

实例
<span style="font-size:14px;">class  HashSetDemo
{
     public static void sop(Object obj)
     {
          System.out.println(obj);
     }
     public static void main(String[] args)
     {
          HashSet hs = new HashSet();

          hs.add(new Person("a1",11));
          hs.add(new Person("a1",11));
          hs.add(new Person("a1",11));
          hs.add(new Person("a1",11));
          hs.add(new Person("a1",11));

          sop(hs.contains(new Person("a2",12)));
          hs.remove(new Person("a3",13));

          Iterator it = hs.iterator();

          while(it.hasNext())
          {
               Person p = (Person)it.next();
               sop(p.getName()+"::"+p.getAge());
          }
     }
}
class Person
{
     private String name;
     private int age;
     Person(String name,int age)
     {
          this.name = name;
          this.age = age;
     }

     public int hashCode()
     {
          System.out.println(this.name+"....hashcode");
          return name.hashCode();
     }

     public boolean equals(Object obj)
     {
          if(!(obj instanceof Person))
               return false;

          Person p = (Person)obj;
          System.out.println(this.name+"...equals..."+p.name);

          return this.name.equals(p.name) && this.age == p.age;
     }

     public String getName()
     {
          return name;
     }
     public int getName()
     {
          return age;
     }
}
</span>

TreeSet可以对Set集合的元素进行自然排序

TreeSet ts = new TreeSet();

ts.add("cba");
ts.add("aaa");
ts.add("bcd");
ts.add("awf");
ts.add("wds");

Iterator it = ts.iterator();
while(it.hasNext())
{
      System.out.println(it.next());
}

TreeSet集合第一种排序方式:对象不具备比较性,需要实现comparable接口
<span style="font-size:14px;"><span style="font-size:14px;">class  TreeSetDemo
{
     public static void main(String[] args)
     {
          TreeSet ts = new TreeSet();

          ts.add(new Student("lisi02",22));
          ts.add(new Student("lisi04",26));
          ts.add(new Student("lisi05",15));
          ts.add(new Student("lisi06",43));
          ts.add(new Student("lisi07",12));

          Iterator it = ts.iterator();
          while(it.hasNext())
          {
               Student stu = (Student)it.next();
               System.out.println(stu.getName()+"..."+stu.getAge());
          }

     }
}
class Student implements Comparable
{
     private String name;
     private int age;

     Student(String name,int age)
     {
          this.name = name;
          this.age = age;
     }

     public int comparableTo(Object obj)
     {
          if(!(obj instanceof Student))
               throw new RuntimeException("不是学生对象");
         
          Student s = (Student)obj;

          if(this.age>s.age)
               return 1;
          if(this.age==s.age)
          {
               return this.name.compareTo(s.name);
          }
          return -1;
     }
     public String getName()
     {
          return name;
     }
     public int getAge()
     {
          return age;
     }
}</span>

二叉树结构, compareTO返回1,正存正取, 返回-1正存反取, 返回0判断是否包含。
TreeSet集合第二种排序方式:元素不具备比较性,让集合具备比较性:
TreeSet ts = new TreeSet(new MyCompare);

class MyCompare implements Comparator
{
     public int compare(Object o1,Object o2)
     {
          Student s1 = (Student)o1;
          Student s2 = (Student)o2;

          return s1.getName().compareTo(s2.getName());
     }
}

注意:compareTo方法和comparator返回的都是正数负数或零。

MAP集合
Map<K,V>
该集合存储键值对,而且要保证键的唯一性。
1.添加
      put(K key,V value)   putAll(Map<? extends K,? extends V> m)
2.删除
      clear();
3.判断
      containsValue(Object value) containsKey(Object key) isEmpty();
4.获取
    get(Object key); size() values()
      entrySet() keySet()

Map :
---Hashtable:底层是哈希表,不可以存入null键null值,线程同步
---HashMap:底层是哈希表数据结构,允许使用null键null值,不同步
---TreeMap:底层是二叉树,不同步可以用于给Map集合中的键进行排序

Set底层使用的是Map集合

Map<String,String> map = new HashMap<String,String>()

map.put("01","zhangsan1");
map.put("02","zhangsan2");
map.put("03","zhangsan3");

map.containsKey("022");//返回FALSE
map.remove("02");//删除并返回zhangsan2
map.get("01");//不存在返回null,存在返回值

map.put(null,"haha");
map.put("04",null);//null键null值
map.get(null);
//获取map集合的所有值
Collection<String> coll = map.values();

添加元素,如果添加相同的键,那么后添加的值会覆盖原有的值,并且put方法会返回被覆盖的值
map.put("04","zhangsan");//返回null
map.put("04","lisu");//返回zhangsan

map集合的两种取出方式:
1.keySet:将map中所有的键存入Set集合,因为Set具备迭代器,可以迭代取出所有的键,然后用get方法,获取每一个键对应的值

Set<String> keySet = map.keySet();
Iterator<String> it = keySet.iterator();

while(it.hasNext())
{
     String key = it.next();
     String value = map.get(key);
     System.out.println("key:"+key+",value:"+value);
}

2.entrySet
Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了Set集合中, 而这个关系的数据类型是map.entry

//将map集合的映射取出,存入到Set集合中
Set<Map.Entry<String,String>> it = map.entrySet();

Iterator<Map.Entry<String,String>> it = entrySet.iterator();
while(it.hasNext())
{
     Map.Entry<String,String> me = it.next();
     String key = me.getKey();
     String value = me.getValue();
}

Map.Entry Entry是一个接口,它是Map集合中的一个内部接口
interface Map
{
     public static interface Entry
     {
          public abstract Object getKey();
          public abstract Object getValue();
     }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值