string.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package global
  2. func CheckElementExists(a string, list []string) bool {
  3. for _, b := range list {
  4. if b == a {
  5. return true
  6. }
  7. }
  8. return false
  9. }
  10. func StringListCompare(list1, list2 []string) (isEqual bool, common, onlyList1, onlyList2 []string) {
  11. if len(list1) != len(list2) {
  12. isEqual = false
  13. }
  14. // 创建map来存储list1列表中的元素
  15. AMap := make(map[string]int)
  16. for _, item := range list1 {
  17. AMap[item]++
  18. }
  19. // 检查B列表中的元素是否在AMap中
  20. for _, item := range list2 {
  21. if count, exists := AMap[item]; !exists || count == 0 {
  22. isEqual = false
  23. }
  24. AMap[item]--
  25. }
  26. if !isEqual {
  27. // 创建一个map来存储A列表中的元素
  28. list1Map := make(map[string]struct{})
  29. for _, a := range list1 {
  30. list1Map[a] = struct{}{}
  31. }
  32. // 查找list2列表中存在但list1列表中不存在的元素
  33. for _, v := range list2 {
  34. if _, exists := list1Map[v]; !exists {
  35. onlyList2 = append(onlyList2, v)
  36. } else {
  37. common = append(common, v)
  38. }
  39. }
  40. // 创建一个map来存储B列表中的元素
  41. list2Map := make(map[string]struct{})
  42. for _, b := range list2 {
  43. list2Map[b] = struct{}{}
  44. }
  45. // 查找list1列表中存在但list2列表中不存在的元素
  46. for _, a := range list1 {
  47. if _, exists := list2Map[a]; !exists {
  48. onlyList1 = append(onlyList1, a)
  49. }
  50. }
  51. return
  52. }
  53. isEqual = true
  54. return
  55. }