金沙澳门官网7817网址C# List去重的两种格局

怎么从命令行中获取一组数字(根据需求值应该只有0,然后统计这组数据中每个数字出现的个数,统计一个字符串中数字和字符串的个数,字符串个数,统计一个字符串中数字和字符串的个数,字符串个数,三种去重的方法,这条语句返回结果只保留users这个List中重复的元素的第一个(name相等认为重复)

金沙澳门官网7817网址 2
GetConvertResult(List<string> list)函数。好了第一个问题解决了

对字符串实行简短的字符数字总结 研究java中的List功用,javalist

题目:

总结二个字符串中数字和字符串的个数,并各自展开排列,须要

一.数字,字符串可以从键盘获取。

2.储存在list

3.计算数字个数,字符串个数

四.把数字和字符串按从小到大的次第输出

5.不能够利用数组.

List的用法

List包罗List接口以及List接口的持有达成类。因为List接口落成了Collection接口,所以List接口具有Collection接口提供的有着常用方法,又因为List是列表类型,所以List接口还提供了某些相符于本身的常用方法。【自行百度】

List接口提供的合乎于自己的常用方法均与索引有关,那是因为List集结为列表类型,以线性方式存款和储蓄对象,能够经过对象的目录操作对象。

List接口的常用落成类有ArrayList和LinkedList,在动用List群集时,平常意况下注脚为List类型,实例化时依据实际景况的须要,实例化为ArrayList或LinkedList,比方:

List<String> l = new ArrayList<String>();//
利用ArrayList类实例化List集结

但是!在小编的eclipse中,要是是在main函数中表明的话,供给写全,不然会产出很不错的辛未革命波浪线【作者在这里融入了好久好久。。。。】

        java.util.List<String> list=new ArrayList<String>();

只是在public class中就径直表达就好

1     
2     static List<String> number=new ArrayList<String>();
3     static List<String> word=new ArrayList<String>();
4     

那边是表明了五个string型的list,分别用来存放在字符串中的数字和字符串

为了实现标题中须要,建构了多少个自定义函数

 计数函数  static void count(List<String> l)

1     static void count(List<String> l){
2         for(int i=0;i<l.size();i++){
3             if(isnumber(l.get(i))){
4                 number.add(l.get(i));
5             }else word.add(l.get(i));
6         }
7         System.out.println("NUMBERCOUNT:  "+number.size());
8         System.out.println("WORDCOUNT:  "+word.size());
9     }//统计字符串和数字的个数

当中List.add(String str)往list中增多str。List.get(int
index)用于获取对象。

推断字符串是还是不是是数字有这般二种办法:

1.使用Character.isDigit(char)判断

1 char num[] = str.toCharArray();//把字符串转换为字符数组
2 StringBuffer title = new StringBuffer();//使用StringBuffer类,把非数字放到title中
3 StringBuffer hire = new StringBuffer();//把数字放到hire中
4 for (int i = 0; i < num.length; i++) {
5 // 判断输入的数字是否为数字还是字符
6 if (Character.isDigit(num[i])) {把字符串转换为字符,再调用Character.isDigit(char)方法判断是否是数字,是返回True,否则False
7 hire.append(num[i]);// 如果输入的是数字,把它赋给hire} else {title.append(num[i]);// 如果输入的是字符,把它赋给title}}}

 

贰.施用类型调换决断

1 try {String str="123abc";
2 int num=Integer.valueOf(str);//把字符串强制转换为数字
3 return true;//如果是数字,返回True
4 } catch (Exception e) {
5 return false;//如果抛出异常,返回False}

 

三.行使正则表明式决断

String str = "";
boolean isNum = str.matches("[0-9]+");

//+代表3个或三个(如”三”或”2二伍”),*意味着0个或三个([0-9]*)(如””或”1″或”22″),?表示0个或1个([0-9]?)(如””或”7″)
ps:那么些方法只可以用于判别是还是不是是正整数

 

小编程序里一贯利用了第三种情势:

1     static boolean isnumber(String a){
2          try {
3                Integer.parseInt(a);//数字字符串转换int型数字    “123”->123
4                return true;
5               } catch (Exception e) {
6                return false;
7               }
8     }//判断是否为数字

Integer.parseInt(a)函数,尽管a中富含非数字,就能够抛出11分。return false。

排序函数是调用了collection下的3个sort自带函数【很好用!】

1     //Collections.sort排序
2         Collections.sort(number);
3         Collections.sort(word);

那样的话,number和word直接产生了平稳从小到大排列的list。

排序其实还有一种办法,是经过调用compare函数。

壹体化程序:

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.List;
 4 import java.util.Scanner;
 5 
 6 
 7 public class classtest {
 8     
 9     
10     static List<String> number=new ArrayList<String>();
11     static List<String> word=new ArrayList<String>();
12     
13     
14     static void count(List<String> l){
15         for(int i=0;i<l.size();i++){
16             if(isnumber(l.get(i))){
17                 number.add(l.get(i));
18             }else word.add(l.get(i));
19         }
20         System.out.println("NUMBERCOUNT:  "+number.size());
21         System.out.println("WORDCOUNT:  "+word.size());
22     }//统计字符串和数字的个数
23     
24     
25     static boolean isnumber(String a){
26          try {
27                Integer.parseInt(a);//数字字符串转换int型数字    “123”->123
28                return true;
29               } catch (Exception e) {
30                return false;
31               }
32     }//判断是否为数字
33     
34 
35     
36     public static void main(String[] args) {
37         
38         System.out.println("please input the string");
39         Scanner get=new Scanner(System.in);
40         String str=get.nextLine();
41         System.out.println("string is "+str);//键盘获取字符串
42         
43         java.util.List<String> list=new ArrayList<String>();//problem?
44         
45         String[] text = str.split(" ");
46         for(int i=0;i<text.length;i++){
47             list.add(text[i]);
48         }//存入list
49         
50         
51         classtest.count(list);
52     
53     //Collections.sort排序
54         Collections.sort(number);
55         Collections.sort(word);
56         System.out.println("number sort:"+number);
57         System.out.println("word sort:"+word);
58     }
59 
60 }

程序其实轻松,可是由于自己对java的不熟习,折腾了很久【差了一些砸Computer……】

程序运营结果:

金沙澳门官网7817网址 1

好了……婴儿继续做下一道题……

查究java中的List作用,javalist 标题:
总括一个字符串中数字和字符串的个数,并分别实行排列,供给 1.数…

完整程序:

 

  那把第三步和第3步结合起来正是:

List<String> l = new ArrayList<String>();//
利用ArrayList类实例化List集结

 

List<int> list = GetConvertResult(Console.ReadLine().Split(' ').Where(item => item.Trim() != "").ToList());

先后其实简单,不过由于自身对java的面生,折腾了很久【差一点砸Computer……】

二种去重的措施

出口样例:

程序运维结果:

  1. users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i)  

  这用ReadLine的话,读取的是字符串,那就必要大家把字符串管理一下,编制程序二个个的数字就能够。那好办了。

叁.总计数字个数,字符串个数

 

一、首先看到样例输出,第3想开的是何等,怎么从命令行中获取1组数字(遵照必要值应该只有0~9)?

为了兑现标题中供给,建构了多少个自定义函数

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4.   
  5. namespace NonDuplicateList  
  6. {  
  7.     class Program  
  8.     {  
  9.         static void Main(string[] args)  
  10.         {  
  11.             List<User> users = new List<User>();  
  12.             users.Add(new User(“张三”, “永丰路299号”));  
  13.             users.Add(new User(“张三”, “上地西路八号”));//重复项,去重后将删掉  
  14.             users.Add(new User(“李肆”, “海鹰路甲一号”));  
  15.   
  16.             List<User> nonDuplicateList一 = users.Distinct().ToList();//通过User类的Equals完结去重  
  17.             List<User> nonDuplicateList2 = users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i).ToList();//拉姆da表明式去重  
  18.             List<User> nonDuplicateList三 = new List<User>();//通过巡回格局去重  
  19.             foreach(User user in users)  
  20.             {  
  21.                 if(nonDuplicateList3.Exists(x=>x.name==user.name) == false)  
  22.                 {  
  23.                     nonDuplicateList3.Add(user);  
  24.                 }  
  25.             }  
  26.   
  27.             foreach(List<User> list in new Object[]{nonDuplicateList1,nonDuplicateList二,nonDuplicateList叁})//打字与印刷出多个List的要素  
  28.             {  
  29.                 Console.Write(“nonDuplicateList:\r\n”);  
  30.                 foreach(User u in list)  
  31.                 {  
  32.                     Console.WriteLine(“\t” + u.ToString());  
  33.                 }  
  34.             }  
  35.             Console.Read();  
  36.         }  
  37.     }  
  38.   
  39.     class User:IEquatable<User>//承继IEquatable接口,实现Equals方法。List就能够使用Distinct去重  
  40.     {  
  41.         public string name { get; set; }  
  42.         string address;  
  43.   
  44.         public User(string _name, string _address)  
  45.         {  
  46.             name = _name;  
  47.             address = _address;  
  48.         }  
  49.   
  50.         public override string ToString()  
  51.         {  
  52.             return string.Format(“name:{0},\taddress:{1}”, name, address);  
  53.         }  
  54.   
  55.         public bool Equals(User other)  
  56.         {  
  57.             return this.name == other.name;  
  58.         }  
  59.         public override int GetHashCode()  
  60.         {  
  61.             return name.GetHashCode();  
  62.         }  
  63.     }  
  64. }  

list =
list.Distinct().ToList();不过此间不那样用,可以连着第一手续一齐变成。

 

一、List中的成分落成IEquatabe接口,并提供Equals方法和GetHashCode方法。

  首先大家领略命令行获读取一般都以字符串,最常用的正是Console.Read和Console.ReadLine。但是那块用Read的话就有点不太方便了,因为你要用循环读取,而且你读过来的是字符的ASCII码值,所以我们用ReadLine方法。

推断字符串是不是是数字有这么三种办法:

去重,那条语句再次回到结果只保留users那么些List中再一次的成分的首先个(name相等感到重新)。

  去除重复数据,那几个轻松。List有个扩展方法Distinct(这么些法子是经过应用私下认可的约等于比较器对值举办相比较再次来到种类中的非重复成分,也正是说倘使是您自定义的系列,Distinct
就不认了,然则此间是int类型,刚好能用)。那这样要缓和第叁个难点,那就是一句代码了

1 try {String str="123abc";
2 int num=Integer.valueOf(str);//把字符串强制转换为数字
3 return true;//如果是数字,返回True
4 } catch (Exception e) {
5 return false;//如果抛出异常,返回False}

二、使用表明式

static List<int> GetConvertResult(List<string> list)
        {
            List<int> iList = new List<int>();
            int iTemp = 0;
            list.ForEach(item =>
            {
                if (int.TryParse(item, out iTemp))
                {
                    iList.Add(iTemp);
                }
            });

            return iList;
        }

四.把数字和字符串按从小到大的一一输出

金沙澳门官网7817网址 2

那这里,大家就用个简易的自定义对象Data.

而是在public class中就直接表达就好

 

  上面那句话的意味正是:从命令行读取的字符串,然后用空格(‘
‘)分割,然后筛选出不为“”的,再转成List,传给

总计一个字符串中数字和字符串的个数,并各自开始展览排列,要求

[csharp] view
plain copy